vascoc Posted June 28, 2012 Report Share Posted June 28, 2012 (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 by Caça Link to comment Share on other sites More sharing options...
jlpcalado Posted June 28, 2012 Report Share Posted June 28, 2012 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 Author Report Share Posted June 28, 2012 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 Report Share Posted June 28, 2012 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 Author Report Share Posted June 28, 2012 (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 by vascoc Link to comment Share on other sites More sharing options...
acao Posted June 28, 2012 Report Share Posted June 28, 2012 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 Report Share Posted June 28, 2012 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 Author Report Share Posted June 28, 2012 (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 by vascoc Link to comment Share on other sites More sharing options...
vascoc Posted June 28, 2012 Author Report Share Posted June 28, 2012 (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 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