Guest Camilla Postado Novembro 1, 2004 Denunciar Share Postado Novembro 1, 2004 ola bom dia!!!Estou fazendo uma pesquisa em um banco de dados Access pelo VB. Só que estou recebendo msg de erro quando executo. Está assim...Private Sub cmd_Pesquisa_Click()'***Declaração de SQL***Dim espaco As IntegerDim cada_palavra As StringDim comp As IntegerDim retirar As IntegerDim strSelect As StringDim busca As String'***Retira os espaços a mais à esquerda e à direita da string de busca***busca = txt_Pesquisar.Textbusca = Trim(busca)'***Retira da string de busca cada uma das palavras existentes.***Do Until InStr(1, busca, Chr(32)) = 0'***Verificar em que posição está o espaço mais à esquerda.***espaco = InStr(1, busca, Chr(32))'***Retira da String apenas uma palavracada_palavra = Left(busca, espaco - 1)'***Verifica o comprimento total da string***comp = Len(busca)'***Determina qual o comprimento depois de ter retirado uma palavra.***retirar = comp - espaco'***A string que vai passar a ser usada será a inicial menos a palavra já colocada na declaração de SQL.busca = Right(busca, retirar)Loop'***Pega os registros***Set rst1 = New RecordsetstrSelect = "select nome, matricula from segurados where news LIKE '%" & cada_palavra & "%' and '%" & busca & "%'"rst1.Open strSelect, conn1, adOpenStatic, adLockOptimistic'***Percorre os registros da tabela***If rst1.EOF = False Then I = 1 rst1.MoveFirst Do While rst1.EOF = False MSFlexGrid1.Rows = I + 1 MSFlexGrid1.Col = 0 MSFlexGrid1.Row = I MSFlexGrid1.Text = rst1.Fields("matricula") MSFlexGrid1.Col = 1 MSFlexGrid1.Row = I MSFlexGrid1.Text = rst1.Fields("nome") rst1.MoveNext I = I + 1 Loop rst1.CloseElse MsgBox "Nenhum nome foi encontrado", vbOKOnlyEnd IfEnd SubA msg de erro: Nenhum valor foi fornecido por um ou mais parametros. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Novembro 2, 2004 Denunciar Share Postado Novembro 2, 2004 Quando se faz uma SQL, você deve repetir o nome do campo, mesmo que queira testar dois valores para o mesmo. O correto aqui seria:strSelect = "select nome, matricula from segurados where news LIKE '%" & cada_palavra & "%' and news LIKE '%" & busca & "%'"Repare que o campo "news" aparece duas vezes (uma vez para cada uma das condições).Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Camilla Postado Novembro 3, 2004 Denunciar Share Postado Novembro 3, 2004 Fiz a alteração, porém, não funcionou... continua dando o mesmo erro!!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Novembro 4, 2004 Denunciar Share Postado Novembro 4, 2004 Experimente exibir a instrução em uma caixa de texto e copiar e colar em uma consulta do Access para ver se dá o mesmo erro. Aparentemente não estou vendo algum erro ali.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest Camilla
ola bom dia!!!
Estou fazendo uma pesquisa em um banco de dados Access pelo VB. Só que estou recebendo msg de erro quando executo. Está assim...
Private Sub cmd_Pesquisa_Click()
'***Declaração de SQL***
Dim espaco As Integer
Dim cada_palavra As String
Dim comp As Integer
Dim retirar As Integer
Dim strSelect As String
Dim busca As String
'***Retira os espaços a mais à esquerda e à direita da string de busca***
busca = txt_Pesquisar.Text
busca = Trim(busca)
'***Retira da string de busca cada uma das palavras existentes.***
Do Until InStr(1, busca, Chr(32)) = 0
'***Verificar em que posição está o espaço mais à esquerda.***
espaco = InStr(1, busca, Chr(32))
'***Retira da String apenas uma palavra
cada_palavra = Left(busca, espaco - 1)
'***Verifica o comprimento total da string***
comp = Len(busca)
'***Determina qual o comprimento depois de ter retirado uma palavra.***
retirar = comp - espaco
'***A string que vai passar a ser usada será a inicial menos a palavra já colocada na declaração de SQL.
busca = Right(busca, retirar)
Loop
'***Pega os registros***
Set rst1 = New Recordset
strSelect = "select nome, matricula from segurados where news LIKE '%" & cada_palavra & "%' and '%" & busca & "%'"
rst1.Open strSelect, conn1, adOpenStatic, adLockOptimistic
'***Percorre os registros da tabela***
If rst1.EOF = False Then
I = 1
rst1.MoveFirst
Do While rst1.EOF = False
MSFlexGrid1.Rows = I + 1
MSFlexGrid1.Col = 0
MSFlexGrid1.Row = I
MSFlexGrid1.Text = rst1.Fields("matricula")
MSFlexGrid1.Col = 1
MSFlexGrid1.Row = I
MSFlexGrid1.Text = rst1.Fields("nome")
rst1.MoveNext
I = I + 1
Loop
rst1.Close
Else
MsgBox "Nenhum nome foi encontrado", vbOKOnly
End If
End Sub
A msg de erro: Nenhum valor foi fornecido por um ou mais parametros.
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.