FAZER CONSULTA AO BANCO POR PARAMETROS
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 !
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 !
Olá, Kary
Segue...
Funciona bem no mysql teste no access
Segue...
sSQL = [Ô]SELECT * From cadempresa WHERE (((cadempresa.EMP_RAZAOSOCIAL) Like [ô][Ô] & TXTPESQUISA & [Ô]%[ô]))ORDER BY EMP_RAZAOSOCIAL;[Ô]
Funciona bem no mysql teste no access
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...
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...
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
2ª se no banco o tipo do campo for numerico não se usa o apostrofo, exemplo:
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:
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
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
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 !
Olhe esta.
[txt-color=#0000f0]http://www.macoratti.net/vb_3cm3.htm[/txt-color]
[txt-color=#0000f0]http://www.macoratti.net/vb_3cm3.htm[/txt-color]
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
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