Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
gastao

erro ao apagar via datetimepicker e via combobox

Recommended Posts

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??

Share this post


Link to post
Share on other sites
Caça

Para evitar esse tipo de erros deves usar parâmetros, já te tinha dito o mesmo aqui, não te lembras?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites
gastao
fechasessao = "delete from [CommunicationLog] where filedate = convert (date, " & DateTimePicker1.Value & ")  and Storeid ='SjoaoTalha'"

algo deste genero???

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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???'

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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()

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.