SQL
TENHO 3 CAMPOS SENDO:
1 - Discriminacao_despesa
2 - Safra_Referencia
3 - Pago
TENHO TAMBéM
UMA COMBOBOX (Combo6), UM TEXTBOX (text2) E UM MASKEDIT (maskedbox4)
GOSTARIA DE FAZER UMA CONSULTA SQL PARA CONSULTAS OS TRES CAMPOS
JA TENTEI DE VARIAS FORMAS E NÃO CONSEGUI
SEGUE O CÓDIGO QUE ESTOU TENTANDO...
Dim SQL, Criterio As String
Criterio = Chr$(39) & [Ô]*[Ô] & Text2.Text & Combo6.text & Maskedbox4.text & [Ô]*[Ô] & Chr$(39)
SQL = [Ô]SELECT * FROM Lancamento_despesa where Discriminacao_despesa LIKE[Ô] & Criterio or Safra_referencia Like [Ô] & criteio or Pago LIKE [Ô] & criterio
Data1.RecordSource = SQL
Data1.Refresh
ONDE POSSO ESTAR ERRANDO?
ORBIGADO
Posso estar enganado, mas você colocou aspas simples ([ô]) para campos texto? Exemplo: [Ô]Discriminacao_despesa[Ô].
Outra: Os [Ô]OR[Ô] estão fora da consulta?
SQL = [Ô]SELECT * FROM Lancamento_despesa where Discriminacao_despesa LIKE [ô][Ô] & Criterio [txt-color=#e80000]or[/txt-color] Safra_referencia Like [Ô] & criteio [txt-color=#e80000]or [/txt-color]Pago LIKE [Ô] & criterio
[][ô]s,
Tunusat.
Vai depender de como você deseja fazer as comparações. No exemplo abaixo compara QUALQUER parte do critério existente em cada campo (porque começa e termina com o caracter coringa %)
Dim SQL, Criterio As String
Criterio = Chr$(39) & [Ô]*[Ô] & Text2.Text & Combo6.Text & Maskedbox4.Text & [Ô]*[Ô] & Chr$(39)
SQL = [Ô]SELECT * FROM Lancamento_despesa where Discriminacao_despesa LIKE [ô]%[Ô] & Criterio & [Ô]%[ô] Or Safra_referencia Like [ô]%[Ô] & criteio & [Ô]%[ô] or Pago LIKE [ô]%[Ô] & Criterio & [Ô]%[ô][Ô]
Data1.RecordSource = SQL
Data1.Refresh
Tudo de bom.
deu erro
too few parameters. expetecd1
Citação::
qual o banco de dados?
acess
é que as aspas simples estão duplas, porque abaixo você usa o CHR$(39) que são aspas simples e na própria SQL já coloquei tais aspas.
Está assim, atualmente:
Criterio = Chr$(39) & [Ô]*[Ô] & Text2.Text & Combo6.Text & Maskedbox4.Text & [Ô]*[Ô] & Chr$(39)
Mas já tem aspas simples na própria SQL. Veja:
SQL = [Ô]SELECT * FROM Lancamento_despesa where Discriminacao_despesa LIKE [ô]%[Ô] & Criterio & [Ô]%[ô] Or Safra_referencia Like [ô]%[Ô] & criteio & [Ô]%[ô] or Pago LIKE [ô]%[Ô] & Criterio & [Ô]%[ô][Ô]
Basta trocar
Criterio = Chr$(39) & [Ô]*[Ô] & Text2.Text & Combo6.Text & Maskedbox4.Text & [Ô]*[Ô] & Chr$(39)
Por
Criterio = [Ô]*[Ô] & Text2.Text & Combo6.Text & Maskedbox4.Text & [Ô]*[Ô]
Vi que você usa o *, então deve ser Access.
O código completo fica:
Dim SQL, Criterio As String
Criterio = [Ô]*[Ô] & Text2.Text & Combo6.Text & Maskedbox4.Text & [Ô]*[Ô]
SQL = [Ô]SELECT * FROM Lancamento_despesa where Discriminacao_despesa LIKE [ô]%[Ô] & Criterio & [Ô]%[ô] Or Safra_referencia Like [ô]%[Ô] & criteio & [Ô]%[ô] or Pago LIKE [ô]%[Ô] & Criterio & [Ô]%[ô][Ô]
Data1.RecordSource = SQL
Data1.Refresh
Tudo de bom.
Faça assim:
Dim SQL as String
Criterio01 As String
Criterio02 As String
Criterio03 As String
Criterio01 = [Ô]*[Ô] & Text2.Text & [Ô]*[Ô]
Criterio02 = [Ô]*[Ô] & Combo6.Text & [Ô]*[Ô]
Criterio03 = [Ô]*[Ô] & Maskedbox4.Text & [Ô]*[Ô]
SQL = [Ô]SELECT * FROM Lancamento_despesa where Discriminacao_despesa LIKE [ô]%[Ô] & Criterio01 & [Ô]%[ô] Or Safra_referencia Like [ô]%[Ô] & Criterio02 & [Ô]%[ô] or Pago LIKE [ô]%[Ô] & Criterio03 & [Ô]%[ô][Ô]
Data1.RecordSource = SQL
Data1.Refresh
Na verdade as variáveis CriterioXX você nem precisaria usar, poderia colocar o text2.text no lugar de criterio01, combo6.text no lugar de criterio02 e maskedbox4.text no lugar de criterio03.
Citação::
Colega, me passou despercebido mais um erro na sua variável critério, porque você junta tudo em uma variável só. Não vai funcionar.
Faça assim:
Dim SQL as String
Criterio01 As String
Criterio02 As String
Criterio03 As String
Criterio01 = [Ô]*[Ô] & Text2.Text & [Ô]*[Ô]
Criterio02 = [Ô]*[Ô] & Combo6.Text & [Ô]*[Ô]
Criterio03 = [Ô]*[Ô] & Maskedbox4.Text & [Ô]*[Ô]
SQL = [Ô]SELECT * FROM Lancamento_despesa where Discriminacao_despesa LIKE [ô]%[Ô] & Criterio01 & [Ô]%[ô] Or Safra_referencia Like [ô]%[Ô] & Criterio02 & [Ô]%[ô] or Pago LIKE [ô]%[Ô] & Criterio03 & [Ô]%[ô][Ô]
Data1.RecordSource = SQL
Data1.Refresh
Na verdade as variáveis CriterioXX você nem precisaria usar, poderia colocar o text2.text no lugar de criterio01, combo6.text no lugar de criterio02 e maskedbox4.text no lugar de criterio03.
cara não deu erro, mas...
não encontra nada no banco de dados
Citação::
:
Colega, me passou despercebido mais um erro na sua variável critério, porque você junta tudo em uma variável só. Não vai funcionar.
Faça assim:
Dim SQL as String
Criterio01 As String
Criterio02 As String
Criterio03 As String
Criterio01 = [Ô]*[Ô] & Text2.Text & [Ô]*[Ô]
Criterio02 = [Ô]*[Ô] & Combo6.Text & [Ô]*[Ô]
Criterio03 = [Ô]*[Ô] & Maskedbox4.Text & [Ô]*[Ô]
SQL = [Ô]SELECT * FROM Lancamento_despesa where Discriminacao_despesa LIKE [ô]%[Ô] & Criterio01 & [Ô]%[ô] Or Safra_referencia Like [ô]%[Ô] & Criterio02 & [Ô]%[ô] or Pago LIKE [ô]%[Ô] & Criterio03 & [Ô]%[ô][Ô]
Data1.RecordSource = SQL
Data1.Refresh
Na verdade as variáveis CriterioXX você nem precisaria usar, poderia colocar o text2.text no lugar de criterio01, combo6.text no lugar de criterio02 e maskedbox4.text no lugar de criterio03.
cara não deu erro, mas...
não encontra nada no banco de dados
agora deu certo
fiz o seguinte
tirei os criterios
no lugar de or coloquei and
eis o código
Dim SQL As String
Criterio = MaskEdBox1
SQL = [Ô]SELECT * FROM Lancamento_despesa where Discriminacao_despesa + pagamento_para LIKE [ô]*[Ô] & Text2.Text & [Ô]*[ô] and Safra_referencia Like [ô]*[Ô] & MaskEdBox4.Text & [Ô]*[ô] and Pago LIKE [ô]*[Ô] & Combo6.Text & [Ô]*[ô] and Data_Vencimento LIKE [ô]*[Ô] & Maskedbox1.text & [Ô]*[ô][Ô]
Data1.RecordSource = SQL
Data1.Refresh
o uso do like pessoalmente não gosto.
sendo a pesquisa em tres campos todos os campos devem estar corretos, porém usandor o OR então bastaria um dos campos estar correto, porém perde-se a lógica de pesquisa pelos tres campos, ja que vai usar apenas um dos campos.
ai você tem uma combo, um textbox e um maskeditbox, a combo esta preenchida com os dados existentes na tabela? o maskeditbox possui a mesma formatação do campo na base de dados? e praque o textbox?
quais os tipo dos campos na base (texto, numero, data, ou o que?) no access cada campo é tratado diferente
percebeu a sucessão de problemas