Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

gastao

erro ao apagar via datetimepicker e via combobox

Mensagens Recomendadas

gastao

boas amigos,

tou com a seguinte situação, quero apagar um certo ficheiro via uma data a minha escolha e uma localizaçao a minha escolha que vem de uma combobox e a minha localizaçao vem de uma combobox.

Se fizer directo

fechasessao = "DELETE FROM [CommunicationLog] WHERE filedate = '2008-07-12' and StoreId='Espanha'"

ele funciona na boa mas se fizer via

fechasessao = "delete from [CommunicationLog] where filedate = " & DateTimePicker1.Value & "  and Storeid = " & ComboBox2.Text & ""

ele nao me corre

o tipo da variavel do filedate é datetime e da localiçao e nvarchar

alguem me sabe dizer o que estou pra aqui a fazer de errado??

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Caça

Não vejo isso como motivo para não usar parâmetros, uma vez que não tens de alterar nada na Base de Dados.


Pedro Martins

Não respondo a duvidas por PM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gastao
fechasessao = "delete from [CommunicationLog] where filedate = convert (date, " & DateTimePicker1.Value & ")  and Storeid ='SjoaoTalha'"

algo deste genero???

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gastao

amigo eu sei que me ajudas te ontem com os get dates e o convert, mas eu nao percebo o que quises te dizer com os paramentros nao te estou a entender msm, nada tem a ver com o outro topico

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gastao

pk a cena de ontem era uma data directamente do sistema hj podem ser datas aliatorias, tenho de sempre converter os campos é isso que queres dizer???'

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Caça

O que disse nessa mensagem aplica-se também aqui, será algo deste género

fechasessao = "delete from [CommunicationLog] where filedate = @filedate  and Storeid = @Storeid "
'(...)
oletal.Parameters.Add("@filedate", SqlDbType.DateTime).Value = DateTimePicker1.Value
oletal.Parameters.Add("@Storeid", SqlDbType.NVarChar).Value = ComboBox2.Text

Tem atenção aos posts duplos, por um minuto podes perfeitamente fazer um EDIT.


Pedro Martins

Não respondo a duvidas por PM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gastao

amigo percebo, mas sao coisas distintas foi por isso que abri novo topico, isto tem um bocado a ver que tambem tou a usar SQL logo directamente e sou novo nisto vou exprementar o que me demontraste obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Caça

Não estava a falar do tópico, ai fizeste bem em criar um novo, estava-me a referir ao facto de estares a criar duas mensagens seguidas num curto espaço de tempo.


Pedro Martins

Não respondo a duvidas por PM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gastao

sim compreendo, peço desculpa, diz me uma coisa o oletal é uma variavel aliatoria que tens que definir ou tipo de command que estamos a usar?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Caça

Onde tem isso deves colocar o teu SqlComand, esse foi o código que peguei e adaptei do teu outro tópico.


Pedro Martins

Não respondo a duvidas por PM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gastao

Sim eu percebi, era para ter mesmo a certezas, fiz algo do genero só que diz me que (must declare the scalar varible@oletal1):

Dim consql2 As System.Data.SqlClient.SqlConnection = New System.Data.SqlClient.SqlConnection("Data Source=" & ListBox1.SelectedItem & ";Initial Catalog=" & ListBox2.SelectedItem & "; Integrated Security=true;")
consql2.Open()
Dim oletal2 As New SqlCommand
Dim oletal1 As New SqlCommand
Dim fechasessao As String
oletal1.Parameters.Add("@filedate", SqlDbType.DateTime).Value = DateTimePicker1.Value
oletal2.Parameters.Add("@Storeid", SqlDbType.NVarChar).Value = ComboBox2.Text
fechasessao = "delete from [CommunicationLog] where filedate = @oletal1  and Storeid = @oletal2 "

Dim olesessao As New SqlCommand(fechasessao, consql2)
olesessao.ExecuteNonQuery()

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Caça

Deixa a string SQL como te dei, assim

delete from [CommunicationLog] where filedate = @filedate  and Storeid = @Storeid

Ao indicares isto

oletal1.Parameters.Add("@filedate", SqlDbType.DateTime).Value = DateTimePicker1.Value
oletal2.Parameters.Add("@Storeid", SqlDbType.NVarChar).Value = ComboBox2.Text

o comando vai substituir as variáveis @filedate e @Storeid pelos valores do DateTimePicker1 e da ComboBox2

O teu código fina deve ser o seguinte

Dim consql2 As System.Data.SqlClient.SqlConnection = New System.Data.SqlClient.SqlConnection("Data Source=" & ListBox1.SelectedItem & ";Initial Catalog=" & ListBox2.SelectedItem & "; Integrated Security=true;")
consql2.Open()
Dim fechasessao As String

fechasessao = "DELETE FROM [CommunicationLog] WHERE filedate = @filedate  AND Storeid = @Storeid"

Dim olesessao As New SqlCommand(fechasessao, consql2)

olesessao.Parameters.Add("@filedate", SqlDbType.DateTime).Value = DateTimePicker1.Value
olesessao.Parameters.Add("@Storeid", SqlDbType.NVarChar).Value = ComboBox2.Text

olesessao.ExecuteNonQuery()


Pedro Martins

Não respondo a duvidas por PM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gastao

funcionou, mas deixa ver se eu percebi os parametros obriga a dizer os campos (combobox, ou textbox) a usar as variaveis que tu definires???

mais uma vez obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Caça

Não, é ao contrario, os parâmetros na string SQL (@Nome) ficam com o valor que está nos objectos(TextBoxes, ComboBoxes, etc.), por exemplo, no teu caso

@Storeid vai ser igual ao valor de ComboBox2.Text


Pedro Martins

Não respondo a duvidas por PM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.