FAZER CONSULTA AO BANCO POR PARAMETROS

KARY92 20/11/2011 02:12:47
#389508
Gente... preciso fazer uma consulta por parâmetros ao banco de dados (Access 2007)...
nunca fiz esse tipo de consulta, então só preciso de um exemplo...

Tipo: selecionar tudo da tabela onde o nome seja o que foi digitado na TextBox1

Eu faço assim:
SELECT * FROM TABELA1 WHERE NOME=[ô][Ô] & TextBox1.Text & [Ô][ô][Ô]

o que ocorre é que se tem apóstrofo na palavra digitada no Textbox dá erro...já lí aqui mesmo que se corrige isso se fizer por parâmetro, então preciso ver um exemplo

Obrigada !
JESUEL.OLIVEIRA 20/11/2011 21:18:50
#389541
Olá, Kary
Segue...

   
sSQL = [Ô]SELECT * From cadempresa WHERE (((cadempresa.EMP_RAZAOSOCIAL) Like [ô][Ô] & TXTPESQUISA & [Ô]%[ô]))ORDER BY EMP_RAZAOSOCIAL;[Ô]



Funciona bem no mysql teste no access
KERPLUNK 21/11/2011 10:45:49
#389570
Resposta escolhida
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset

Set cn = New ADODB.Connection
cn.ConnectionString = [Ô]Sua connectionstring vai aqui[Ô]
cn.Open

Set cmd = New ADODB.Command
With cmd
.ActiveConnection = cn
.Prepared = True
.CommandText = [Ô]Select * From TABELA1 Where Nome = ?[Ô]
.CommandType = adCmdText
.Parameters.Append .CreateParameter([Ô]Nome[Ô], adVarWChar, adParamInput, , Textbox1.Text)
End With
Set rs = cmd.Execute

Mais ou menos isso...
MARCELO.TREZE 21/11/2011 21:40:02
#389634
quando usa-se o access vc deve seguir algumas regrinhas:

1ª se no banco o tipo do campo for texto usa-se a consulta com apóstrofos, e

ssql = [Ô]select * from tabela where nome = [ô][Ô] & text1.text & [Ô][ô][Ô]


2ª se no banco o tipo do campo for numerico não se usa o apostrofo, exemplo:

ssql =[Ô]select from tabela where id = [Ô] & text1.text


obs: neste caso vc só poderá digitar numeros no textbox

3ª se for um campo do tipo data/hora usa-se o # com o seguinte formato mes/dia/ano (mm/dd/yyyy), ex:

ssql = [Ô]select from tabela where nascimento = #[Ô] & Format(text1.text,[Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]


obs: neste caso vc poderá digitar a data da forma correta (dd/mm/yyyy) que o format na query se encarregará de inverter

siga as regras acima e jamais terá erros
KARY92 22/11/2011 06:17:37
#389648
Citação:


Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset

Set cn = New ADODB.Connection
cn.ConnectionString = [Ô]Sua connectionstring vai aqui[Ô]
cn.Open

Set cmd = New ADODB.Command
With cmd
.ActiveConnection = cn
.Prepared = True
.CommandText = [Ô]Select * From TABELA1 Where Nome = ?[Ô]
.CommandType = adCmdText
.Parameters.Append .CreateParameter([Ô]Nome[Ô], adVarWChar, adParamInput, , Textbox1.Text)
End With
Set rs = cmd.Execute

Mais ou menos isso...



[txt-color=#e80000]KERPLUNK[/txt-color]

é assim mesmo que procuro...ví outro exemplo só que em vbnet 2010 porém estou confusa nessa parte do CreateParameter()
e porque o [Ô]?[Ô] no final do select ??? vc tá dizendo a variavel é isso ?

Obrigada !
OMAR2011 22/11/2011 09:08:41
#389671
Olhe esta.

[txt-color=#0000f0]http://www.macoratti.net/vb_3cm3.htm[/txt-color]
KERPLUNK 22/11/2011 09:16:18
#389673
O [Ô]?[Ô] representa um parâmetro. No lugar dele vai ser colocado o que eu determinar para o primeiro parâmetro. A única coisa que deve ser levada em conta é que na hora da montagem os parâmetros são lidos em ordem de adição, ou seja, o primeiro [Ô]?[Ô] representa o primeiro parâmetro e assim por diante.
Eu poderia ter algo como:
With cmd
.ActiveConnection = cn
.Prepared = True
.CommandText = [Ô]Select * From TABELA1 Where Nome = ? And Classe=? and DataNascimento = ?[Ô]
.CommandType = adCmdText
.Parameters.Append .CreateParameter([Ô]Nome[Ô], adVarWChar, adParamInput, , Textbox1.Text)
.Parameters.Append .CreateParameter([Ô]Classe[Ô], adNumeric, adParamInput, , Textbox2.Text)
.Parameters.Append .CreateParameter([Ô]DataNascimento[Ô], adDate, adParamInput, , Textbox3.Text)
End With

Essa mesma sintaxe e regra é valido também para outros comandos SQL, como o INSERT e o UPDATE:
With cmd
.ActiveConnection = cn
.Prepared = True
.CommandText = [Ô]UPDATE TABELA1 Set Nome = ?, Classe=?, DataNascimento = ? Where Codigo = ?[Ô]
.CommandType = adCmdText
.Parameters.Append .CreateParameter([Ô]Nome[Ô], adVarWChar, adParamInput, , Textbox1.Text)
.Parameters.Append .CreateParameter([Ô]Classe[Ô], adNumeric, adParamInput, , Textbox2.Text)
.Parameters.Append .CreateParameter([Ô]DataNascimento[Ô], adDate, adParamInput, , Textbox3.Text)
.Parameters.Append .CreateParameter([Ô]Codigo[Ô], adNumeric, adParamInput, , txtCodigo.Text)
End With
Tópico encerrado , respostas não são mais permitidas