ONDE TO ERRADO NESSA SQL?

WEBIER 28/12/2009 21:24:05
#330616
SQL:

Call ABRIR_BD_SEM_DATA1
SQL = [Ô]SELECT * FROM MESAS WHERE (MESA = [ô][Ô] & lblMesa.Caption & [Ô][ô])[Ô]
Set rs = BD.OpenRecordset(SQL)

[ô]If Not rs.EOF Then
If rs!Status = True Then lblStatus.Caption = [Ô]Ocupada[Ô]: lblStatus.ForeColor = vbRed Else lblStatus.Caption = [Ô]Disponível[Ô]: lblStatus.ForeColor = vbGreen
[ô]End If
rs.Close
BD.Close


O campo STATUS é do tipo SIM/NÃO

tanto o campo tando marcado ou não ele tah colocando o caption = OCUPADO

LOOZE 28/12/2009 22:24:34
#330619
Eu faria assim..

  
SQL = [Ô]SELECT * FROM MESAS WHERE MESA =[ô][Ô] & lblMesa.Caption & [Ô][ô][Ô]
Set rs = BD.OpenRecordset(SQL)
If Not rs.EOF and not rs.Bof Then
If rs!Status = True Then
lblStatus.Caption = [Ô]Ocupada[Ô]: lblStatus.ForeColor = vbRed
Else
lblStatus.Caption = [Ô]Disponível[Ô]: lblStatus.ForeColor = vbGreen
end if
else
msgbox [Ô]Registro não encontrado.[Ô]
End If

TECLA 28/12/2009 22:51:27
#330620
Resposta escolhida
Tente assim:

lblStatus.Caption = [Ô]Disponível[Ô]
lblStatus.ForeColor = vbGreen

Call ABRIR_BD_SEM_DATA1
SQL = [Ô]SELECT status FROM Mesas WHERE Mesa LIKE [ô][Ô] & lblMesa.Caption & [Ô][ô][Ô]
Set rs = BD.OpenRecordset(SQL)

If Not rs.EOF Then
If rs.Fields([Ô]status[Ô]) = True Then
lblStatus.Caption = [Ô]Ocupada[Ô]
lblStatus.ForeColor = vbRed
End If
Else
MsgBox [Ô]Mesa não encontrada[Ô], , [Ô]Atenção[Ô]
End If

rs.Close
BD.Close
WEBIER 28/12/2009 23:06:04
#330621
os 2 códigos q vcs postaram dar a mesma coisa.

Sempre dar [Ô]Ocupado[Ô]

e na tabela somente a mesa 02 e a 04 estão com o STATUS = TRUE
TECLA 29/12/2009 00:31:34
#330627
Aqui deu certo!
Veja o código abaixo e a imagem (acima) com o resultado.

lblStatus.Caption = [Ô]Disponível[Ô]
lblStatus.BackColor = vbGreen

Dim con As New ADODB.Connection, rs As New ADODB.Recordset
con.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0; [Ô] & _
[Ô]Data Source=[Ô] & App.Path & [Ô]\bd1.mdb[Ô]

rs.Open [Ô]SELECT status FROM Mesas WHERE Mesa LIKE [ô][Ô] & lblMesa.Caption & [Ô][ô][Ô], con

If Not rs.EOF Then
If rs.Fields([Ô]status[Ô]) = True Then
lblStatus.Caption = [Ô]Ocupada[Ô]
lblStatus.BackColor = vbRed
End If
Else
MsgBox [Ô]Mesa não encontrada[Ô], , [Ô]Atenção[Ô]
End If

rs.Close
con.Close
LOOZE 29/12/2009 01:46:18
#330633
Só tome cuidado com o LIKE, pois ele pode dar mas problema ainda,, por exemplo
se vc deseja consultar a mesa 1
ele vai encontrar a mesa
10
11
12
13......

tudo que tiver [Ô]1[Ô], ele ira trazer..
Outra observação..

Voce ja tem registros na tabela Mesas, pois se tiver ele sempre ira por o ponteiro no primeiro registro. nesse caso voce precisa de outro parametro no seu SQL... é só uma sugestão.. não sei como vc armazena os registros.. mas faça o teste.. limpe toda a tabela e veja o SQL do jeito que esta, pois não tem erro algum.
WEBIER 29/12/2009 10:49:52
#330649
tenho uma tabela chamada MESA com as mesas já cadastradas


COD MESA STATUS
1 MESA 01 FALSE
2 MESA 02 [txt-color=#007100]TRUE[/txt-color]
3 MESA 03 FALSE
4 MESA 04 [txt-color=#007100]TRUE[/txt-color]
5 MESA 05 FALSE

ai quando eu abrir a janela.... no form_load vai ter um codigo que procure a MESA=MESA 02 e veja o status dela... se for TRUE ele deve mudar o label lblStatus para OCUPADA, senao DISPONIVEL
RCMRO 29/12/2009 11:06:58
#330650
Tipo assim.... Manda uma cópia do seu BD só com essa tabela e o código do procedimento ABRIR_BD_SEM_DATA1 para a gente tentar te ajudar pois, tudo o que o pessoal acima fez deveria funcionar 100% então, deve ser um detalhe ou na abertura do Banco (via DAO, ADO, etc), a versão do DAO/ADO, etc...
Com esses 2 itens que te pedi, a gendo pode simular para tentar te ajudar mais... Aliás, está usando DAO ou ADO?? Que versão? E a sua versão do JET?
Enfim, enche a gente de informação para podermos ajudar.
F001E 29/12/2009 11:30:06
#330652
esse campo STATUS o tipo dele no Banco de Dados esta como Boolean ?....eu faria como Integer....1 Ocupado 0 Disponivel....
WEBIER 29/12/2009 11:41:53
#330653
DESCOBRIR O ERRO!

tenho um form com 5 commandbutton em Array... cada um possui o nome de uma mesa: MESA 01, MESA 02, ETC

quan clico nem um botão é para ele abrir outro form (o que tem esse codigo ai de cima) para mostrar o status daquela mesa.

Private Sub cmdMesa_Click(Index As Integer)
Mesas_Itens.Show
Mesas_Itens.lblMesa.Caption = cmdMesa(Index).Caption
End Sub


ou seja....
ele faz nessa ordem:
-carreha o form Mesas_Itens
-usa o form_load do Mesas_Itens e nao encontra o q quero
-só depois ele muda o caption do lblmesa

já tentei colocar assim:
Mesas_Itens.lblMesa.Caption = cmdMesa(Index).Caption
Mesas_Itens.Show


mas acontece a mesma coisa!
WEBIER 29/12/2009 11:48:46
#330654
já resolvir colocando no chance do label lblmesas

valew gente!
Tópico encerrado , respostas não são mais permitidas