CONSULTA DATAGRID

JEFFERMARTINS 18/01/2012 11:43:38
#393538
Bom dia Pessoal.

Estou tentando realizar uma consulta em um DataGrid atraves de um textbox, porém, ao clicar em consulta ocorre o erro: [Ô]Nenhum valor fornecido para um ou mais parametros necessários.
Alguem pode me ajudar a localizar o erro?

Abaixo o Cód.

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
St = [Ô]Select empresa From tblCadastro WHERE ordem = [Ô] & Val(txtOS.Text)
tblDataAdapter = New OleDb.OleDbDataAdapter(St, conexao)
tblDataAdapter.Fill(Consulta, [Ô]tblCadastro[Ô])


Dim Result As DataTable = Consulta.Tables([Ô]tblCadastro[Ô])
Dim Result_linha As DataRow
If Result.Rows.Count > 0 Then
Result_linha = Result.Rows(0)
Dim userDataTable As New DataTable
Try
If IsNumeric(txtOS.Text) = True Then
DataGridView1.DataSource = Me.consultar(False, CType(txtOS.Text, Integer), txtOS.Text.Trim)

End If
userDataTable = DataGridView1.DataSource
Me.Ordenar(userDataTable, DataGridView1.CurrentRow.Index)

Catch ex As Exception

End Try
Else

MsgBox([Ô]Não existe OS cadastrada com o número: [Ô] & txtOS.Text)
Exit Sub
End If



End Sub
Private Function consultar(ByVal mostrar As Boolean, ByVal codigo As Integer, ByVal nome As String) As DataTable
Dim UserDataTable As New DataTable
Dim sbusca As New StringBuilder
Try
With sbusca
.Append([Ô]Select OS[Ô] + vbCrLf)

.Append([Ô] ,nome[Ô] + vbCrLf)
.Append([Ô] ,socioadm[Ô] + vbCrLf)
.Append([Ô] ,participacao[Ô] + vbCrLf)
.Append([Ô] ,Código[Ô] + vbCrLf)
.Append([Ô] ,endereco[Ô] + vbCrLf)
.Append([Ô] ,estadocivil[Ô] + vbCrLf)
.Append([Ô] ,regcomunhao[Ô] + vbCrLf)
.Append([Ô] ,outra[Ô] + vbCrLf)
.Append([Ô] ,obs[Ô] + vbCrLf)
.Append([Ô] ,código[Ô] + vbCrLf)

.Append([Ô]From tblSocios[Ô] + vbCrLf)

If Not mostrar Then
If codigo <> Nothing Then
.Append([Ô]Where os = {ccodigo}[Ô] + vbCrLf)


End If
.Replace([Ô]{ccodigo}[Ô], codigo)

End If

End With

UserDataTable = Me.ExecutarLeitura(sbusca.ToString).Tables(0)



Return UserDataTable
Catch ex As Exception
MsgBox(ex.Message)
Return Nothing
End Try

End Function
GUIMORAES 18/01/2012 13:39:22
#393558
Olá.

Mudei um pouco aqui, mas só para que possamos encontrar o erro.

Dim UserDataTable As New DataTable
[ô]Dim sbusca As New StringBuilder
Dim sql as String

Try

sql = [Ô]Select OS,NOME,SOCIOADM,PARTICIPACAO,CODIGO,ENDERECO,ESTADOCIVIL,REGCOMUNHAO,OUTRA,OBS,CODIGO[Ô]
sql = sql & [Ô] FROM TBLSOCIOS[Ô]
sql = sql & [Ô] WHERE OS = [ô][Ô] & CODIGO & [Ô][ô][Ô]


UserDataTable = Me.ExecutarLeitura(sql).Tables(0)


Return UserDataTable
Catch ex As Exception
MsgBox(ex.Message)
Return Nothing
End Try

Tenta para ver se funciona.
Abraços
JEFFERMARTINS 19/01/2012 08:53:36
#393618
Bom dia Guimoraes

AInda continua com a mesma mensagem.

Por acaso, você tem alguma outra maneira que eu possa fazer isso. Se puder me explicar, agradeço.

Resumidamente, estou fazendo uma tela para orçamentos, e preciso ir incluindo alguns produtos, mas preciso que o datagrid seja atualizado automaticamente, assim que inserido um novo produto.


Obrigado pela ajuda.
Abraço.
GUIMORAES 19/01/2012 09:57:30
#393625
Quando você chama a Função consultar, quais valores você passa pelo parâmetro?
Abraços.
KERPLUNK 19/01/2012 10:00:17
#393626
Resposta escolhida
O problema, está nessa função [Ô]ExecutarLeitura[Ô]. A SQL que vc está passando para ela deve estar mal formada. Verifique se [Ô]CODIGO[Ô] contém alguma coisa.
Mas antes disso:
- Aprenda a fazer uso de DataReader para leitura de dados ao invés de um DataTable, é mais rápido e mais simples.
- Aprenda a usar parametrização nas suas queries, não concatenação de string, isso para evitar uma série de problemas como SQL Injection por exemplo
Não estou fazendo uma crítica, longe disso. Estou tentando ajudar, fazendo vc ter melhores práticas no seu código...
Tópico encerrado , respostas não são mais permitidas