vascoc Posted June 28, 2012 at 02:02 PM Report Share #466170 Posted June 28, 2012 at 02:02 PM (edited) Boas, eu tenho a textbox onde insiro o valor do preço que quero procurar, e ao procurar assim está a dizer que não encontra valores...Mas como podem ver existe um neste exemplo, como é que faço ? http://img818.imageshack.us/img818/4900/dasnq.jpg Eis o meu SELECT: Private Sub picpreco_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picpreco.Click If txtpreco.Text = "" Then MsgBox("Insira o Preço") Else Try conn = New SqlCeConnection(My.Settings.HOTEL_DBConnectionString) cmd = New SqlCeCommand("SELECT Tipo_Pensão.Tipo_Pensao AS [Tipo Pensão], Tipo_Pensão.Preco_Pensao AS [Preço] FROM Tipo_Pensão WHERE Preco_Pensao LIKE '%" & txtpreco.Text & "%' ", conn) da = New SqlCeDataAdapter(cmd) ds = New DataSet() ' Dim dr As SqlCeDataReader = cmd.ExecuteReader() With conn If .State = ConnectionState.Open Then 'ta aberto .Close() ' fechamos End If .Open() ' abrimos a conexao End With da.Fill(ds, "consulta") cb = New SqlCeCommandBuilder(da) Catch ex As Exception MessageBox.Show(ex.Message, "informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try total = ds.Tables("consulta").Rows.Count If total = 0 Then MsgBox("Nenhum registo encontrado", MsgBoxStyle.Critical, "Erro") Else Tipo_PensãoDataGridView.Visible = True Dim dr As SqlCeDataReader = cmd.ExecuteReader() Tipo_PensãoDataGridView.Columns.Clear() Dim n As Integer = dr.FieldCount Dim campo As String Dim k As Integer For k = 0 To n - 1 campo = dr.GetName(k) Tipo_PensãoDataGridView.Columns.Add(campo, campo) Next Dim i As Integer = 0 While dr.Read() Tipo_PensãoDataGridView.Rows.Add(dr.Item(0), dr.Item(1)) i = i + 1 End While Tipo_PensãoDataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnMode.AllCells If total = 1 Then lblregistos.Text = " Econtrado " & total & " tipo de quarto" Else lblregistos.Text = " Econtrados " & total & " tipos de quartos:" End If End If End If conn.Close() Tipo_PensãoDataGridView.ClearSelection() txttipo.Text = "" End Sub Edited June 28, 2012 at 02:25 PM by Caça Link to comment Share on other sites More sharing options...
jlpcalado Posted June 28, 2012 at 02:46 PM Report Share #466189 Posted June 28, 2012 at 02:46 PM Se o tipo de dados de [Preco_Pensao] for numérico (deve ser o caso) não podes utilizar o LIKE no sql podes fazer cmd = New SqlCeCommand("SELECT Tipo_Pensão.Tipo_Pensao AS [Tipo Pensão], Tipo_Pensão.Preco_Pensao AS [Preço] FROM Tipo_Pensão WHERE [Preco_Pensao] =" & CDec(txtpreco.Text), conn) Link to comment Share on other sites More sharing options...
vascoc Posted June 28, 2012 at 04:19 PM Author Report Share #466230 Posted June 28, 2012 at 04:19 PM Desde já obrigado pela resposta, mas olha: http://img843.imageshack.us/img843/4738/dasfu.jpg Link to comment Share on other sites More sharing options...
jlpcalado Posted June 28, 2012 at 05:38 PM Report Share #466248 Posted June 28, 2012 at 05:38 PM Ora aqui está uma das situações de que já te falei relaativa/ aos parâmetros. Se no teu sistema tens o separador decimal dos números definidos como ',' a query vai ser: "SELECT Tipo_Pensão .... WHERE [Preco_Pensao] = 50,00" A vírgula entre 50 e 00 vai estragar tudo. Faz " ... WHERE [Preco_Pensao] =@pp" ccmd.parameters.add("@pp",CDec(txtpreco.Text)) ... É SEMPRE melhor trabalhar com parâmetros Link to comment Share on other sites More sharing options...
vascoc Posted June 28, 2012 at 06:08 PM Author Report Share #466259 Posted June 28, 2012 at 06:08 PM (edited) Deu nisto agora. Amanhã vou apresentar o meu projeto, e no meio de tanta cena, isto é a única cena que não dá... http://img201.imageshack.us/img201/3101/semttuloyta.png Private Sub picpreco_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picpreco.Click If txtpreco.Text = "" Then MsgBox("Insira o Preço", MsgBoxStyle.Exclamation) Else Try conn = New SqlCeConnection(My.Settings.HOTEL_DBConnectionString) cmd = New SqlCeCommand("UPDATE Tipo_Pensão SET Preco_Pensao =" & Preco_Tipo_QuartoTextBox.Text.Split(",")(0).Trim & " WHERE [Preco_Pensao] =@pp") cmd.Parameters.Add("@pp", CDec(txtpreco.Text)) da = New SqlCeDataAdapter(cmd) ds = New DataSet() With conn If .State = ConnectionState.Open Then 'ta aberto .Close() ' fechamos End If .Open() ' abrimos a conexao End With da.Fill(ds, "consulta") cb = New SqlCeCommandBuilder(da) Catch ex As Exception MessageBox.Show(ex.Message, "informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try total = ds.Tables("consulta").Rows.Count If total = 0 Then MsgBox("Nenhum registo encontrado", MsgBoxStyle.Critical, "Erro") Else Tipo_PensãoDataGridView.Visible = True Dim dr As SqlCeDataReader = cmd.ExecuteReader() Tipo_PensãoDataGridView.Columns.Clear() Dim n As Integer = dr.FieldCount Dim campo As String Dim k As Integer For k = 0 To n - 1 campo = dr.GetName(k) Tipo_PensãoDataGridView.Columns.Add(campo, campo) Next Dim i As Integer = 0 While dr.Read() Tipo_PensãoDataGridView.Rows.Add(dr.Item(0), dr.Item(1)) i = i + 1 End While Tipo_PensãoDataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnMode.AllCells If total = 1 Then lblregistos.Text = " Econtrado " & total & " tipo de quarto" Else lblregistos.Text = " Econtrados " & total & " tipos de quartos:" End If End If End If conn.Close() Tipo_PensãoDataGridView.ClearSelection() txttipo.Text = "" End Sub Edited June 28, 2012 at 07:10 PM by vascoc Link to comment Share on other sites More sharing options...
acao Posted June 28, 2012 at 06:47 PM Report Share #466268 Posted June 28, 2012 at 06:47 PM boas jlpcalado desculpe estar a meter o guedelho mas é só para ele ir adiantando. consulte este tutorial: http://wiki.portugal-a-programar.pt/dev_net:vb.net:access cumps acao Link to comment Share on other sites More sharing options...
jlpcalado Posted June 28, 2012 at 06:53 PM Report Share #466269 Posted June 28, 2012 at 06:53 PM cmd = New SqlCeCommand("UPDATE Tipo_Pensão SET Preco_Pensao =" & Preco_Tipo_QuartoTextBox.Text.Split(",")(0).Trim & " WHERE [Preco_Pensao] =@pp", conn) Link to comment Share on other sites More sharing options...
vascoc Posted June 28, 2012 at 07:00 PM Author Report Share #466272 Posted June 28, 2012 at 07:00 PM (edited) Desculpa, nem reparei nisso, isto agora é tanta coisa que nem olho para as coisas mais a mão... agora dá este erro: http://img221.imageshack.us/img221/7673/semttulovm.png cmd = New SqlCeCommand("SELECT Tipo_Pensão.Tipo_Pensao AS [Tipo Quarto], Tipo_Pensão.Preco_Pensao AS[Preço] FROM Tipo_Pensão WHERE Preco_Pensao = @pp", conn) cmd.Parameters.Add("@pp", CDec(txtpreco.Text)) http://img4.imageshack.us/img4/8246/semttulofir.png Object reference not set to an instance of an object. Edited June 28, 2012 at 09:07 PM by vascoc Link to comment Share on other sites More sharing options...
vascoc Posted June 28, 2012 at 09:09 PM Author Report Share #466293 Posted June 28, 2012 at 09:09 PM (edited) Resolvido, ficou assim, ouve aí uma grande confusão de tabelas... Private Sub picpreco_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picpreco.Click If txtpreco.Text = "" Then MsgBox("Insira o Preço", MsgBoxStyle.Exclamation) Else Try conn = New SqlCeConnection(My.Settings.HOTEL_DBConnectionString) cmd = New SqlCeCommand("SELECT Tipo_Pensão.Tipo_Pensao AS [Tipo Quarto], Tipo_Pensão.Preco_Pensao AS[Preço] FROM Tipo_Pensão WHERE Preco_Pensao = @pp", conn) cmd.Parameters.Add("@pp", CDec(txtpreco.Text)) da = New SqlCeDataAdapter(cmd) ds = New DataSet() With conn If .State = ConnectionState.Open Then 'ta aberto .Close() ' fechamos End If .Open() ' abrimos a conexao End With da.Fill(ds, "consulta") cb = New SqlCeCommandBuilder(da) Catch ex As Exception MessageBox.Show(ex.Message, "informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try total = ds.Tables("consulta").Rows.Count If total = 0 Then MsgBox("Nenhum registo encontrado", MsgBoxStyle.Critical, "Erro") Else Tipo_PensãoDataGridView.Visible = True Dim dr As SqlCeDataReader = cmd.ExecuteReader() Tipo_PensãoDataGridView.Columns.Clear() Dim n As Integer = dr.FieldCount Dim campo As String Dim k As Integer For k = 0 To n - 1 campo = dr.GetName(k) Tipo_PensãoDataGridView.Columns.Add(campo, campo) Next Dim i As Integer = 0 While dr.Read() Tipo_PensãoDataGridView.Rows.Add(dr.Item(0), dr.Item(1)) i = i + 1 End While Tipo_PensãoDataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnMode.AllCells If total = 1 Then lblregistos.Text = " Econtrado " & total & " tipo de quarto" Else lblregistos.Text = " Econtrados " & total & " tipos de quartos:" End If End If End If conn.Close() Tipo_PensãoDataGridView.ClearSelection() txttipo.Text = "" End Sub Edited June 29, 2012 at 07:55 AM by Caça Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now