Ir para conteúdo
Fórum Script Brasil
  • 0

Conexão Via Ado


ToPronto N'Area

Pergunta

Olá pessoal, é o seguinte, estou migrando de access para sql, e como era de se esperar estou levando uma surra1

Eu uso muito dbgrid em minhas aplicações, já troquei para o data grid, que é identico ao meu ver!

Mas o problema não é este eu tenho um codigo com o bco de dados access que funciona como uma busca onde ele vai filtrando conforme eu digito a palavra, palavra a qual pode ser klker uma em que eu especificar no select do recordsource do data.

Ex.

No Load

Data1.Databasename = "U:\Metta.mdb"

Data1.Recordsource = "Select * From Agenda"

Data1.Refresh

dai no change da text TxtPesq eu coloco o codigo:

Dim Sql as string

Sql = "SELECT Apelido, Nome, FoneFixo, FoneCel, email FROM Agenda WHERE "

Sql = Sql & "Apelido LIKE '" & TxtPesq.Text & "*' or Nome LIKE '" & TxtPesq.Text & "*' "

Sql = Sql & "or FoneFixo LIKE '" & TxtPesq.Text & "*' or FoneCel LIKE '" & TxtPesq.Text & "*' "

Sql = Sql & "or email LIKE '" & TxtPesq.Text & "*'"

Data1.Recordsource = Sql

Data1.Refresh

Daí o que ocorre, quando eu digito klker palavra na text ele procura pra mim onde ele tem algo parecido e vai filtrando os valores no dbgrid.

Eu quero fazer o mesmo com o ADO e SQL.

Porem

Eu trabalho da seguinte forma no ado

No objeto ado eu configuro as opçoes

Connectionstring = FILE NAME=U:\Conecta.udl

ONde conecta é uma udl que testa e faz a conexão com o bd sql

depois eu configuro as opções

LockType = adlockoptimisc

e o recordsource dele eu abro nos ... do lado e peço

2 - adcmdtable

e abaixo seleciono a tabela neste caso tabela "Agenda"

dai via codigo eu não faço nada, o problema é

que na mesmo instrução que eu fazia com o data, não da certo com o sql, ele não aceita a instrução sql

porem os outros codigo de botoes incluir salvar excluir está td ok!

o codigo fica assim

Dim Sql As String

Sql = "SELECT Apelido, Nome, FoneFixo, FoneCel, email FROM Agenda WHERE "

Sql = Sql & "Apelido LIKE '" & TxtPesq.Text & "*' or Nome LIKE '" & TxtPesq.Text & "*' "

Sql = Sql & "or FoneFixo LIKE '" & TxtPesq.Text & "*' or FoneCel LIKE '" & TxtPesq.Text & "*' "

Sql = Sql & "or email LIKE '" & TxtPesq.Text & "*'"

AdoAge.RecordSource = Sql

AdoAge.Refresh

Se alguém puder me dar uma ajuda eu fico grato!

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Opa beleza!!!!

aparentemente o problema é simples, pois quando você usa like no Access tem que usar o simbolo "*", porem no SQL server voce tem que usar o simbolo %

veja como ficaria o seu codigo

Dim Sql As String
Sql = "SELECT Apelido, Nome, FoneFixo, FoneCel, email FROM Agenda WHERE "
Sql = Sql & "Apelido LIKE '" & TxtPesq.Text & "%' or Nome LIKE '" & TxtPesq.Text & "%' "
Sql = Sql & "or FoneFixo LIKE '" & TxtPesq.Text & "%' or FoneCel LIKE '" & TxtPesq.Text & "%' "
Sql = Sql & "or email LIKE '" & TxtPesq.Text & "%'"

AdoAge.RecordSource = Sql
AdoAge.Refresh[/codebox]

Espero ter te ajudado

FUI!!!!!!!!!!!!!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --ADRIANO2605 --
Graymalkin, você sabe me explicar a diferença entre adCmdText e acCmdTable? e os outros que existem também...

ou onde consigo essas explicações?

Obrigado!

Grande quando você usa adCmdText, você tem de escrever o select.

E quando você usa o acCmdTable, você somente seleciona a tabela!

E aproveitando a resposta.

deu o seguinte erro trocando o * por %

Run-timer error '-2147217900 (80040e14)':

Incorrect syntax near the keyword 'select'.

O que será isso, a instrução está errada, sera que não da pra ela ficar no evento change da text?

Bom vou continuar pesquisando, se puderem me ajudar fico grato.

desde já obrigado pela mao!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Joaozava,

Bom, o Adriano já respondeu para que servem os dois tipos de comandos. Agora, em relação a onde saber isso... bom, eu sei pelos "nomes" deles. Creio que nunca tenha lido efetivamente em algum lugar uma explicação sobre os mesmos.

adCmdUnknown = Desconhecido (ou seja, ele vai tentar determinar sozinho qual dos três abaixo deve ser usado, de acordo com o comando passado);

adCmdText = Texto (ou seja, uma instrução SQL);

adCmdTable = Tabela (ou seja, somente o nome da tabela);

adCmdStoredProc = Uma Stored Procedure (ou seja, um procedimento já gravado no BD).

Certo? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Galera consegui resolver o caso!

Ficou assim!

Primeiramente tem de selecionar o adcmdtext, prq se não o ado não aceita instrução sql e somente o nome da tabela!

dai você coloca este codigo no change da text

Private Sub TxtPesq_Change()

Dim Criterio As String

Criterio = Chr$(39) & TxtPesq.Text & "%" & Chr$(39)

Dim Sql As String

Sql = "SELECT Apelido, Nome, FoneFixo, FoneCel, email FROM Agenda WHERE "

Sql = Sql & "Apelido LIKE " & Criterio & " or Nome LIKE " & Criterio & ""

Sql = Sql & "or FoneFixo LIKE " & Criterio & " or FoneCel LIKE " & Criterio & " "

Sql = Sql & "or email LIKE " & Criterio & " "

AdoAge.RecordSource = Sql

AdoAge.Refresh

End Sub

Nada se cria tudo se copia!

Espero que possa servir de ajuda pra vocês!

Abraços!

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...