SELECT CONFUSO

IRENKO 12/02/2010 14:21:59
#334272
Com select abaixo populo um Grid:

mSql = [Ô]SELECT Baixa.nome,baixa.material,Baixa.Chapa,Baixa.Cod,Max(Baixa.Data2) AS Maior_Data,Materiais.Codigo,materiais.prazo,dados.Numero FROM (Baixa [Ô] & _
[Ô] INNER JOIN dados ON Baixa.Chapa = dados.numero) [Ô] & _
[Ô] INNER JOIN materiais ON materiais.codigo = baixa.cod [Ô] & _
[Ô] WHERE Baixa.Nome = [ô][Ô] & Criterio_Nome & [Ô][ô] GROUP BY baixa.nome,baixa.material,baixa.chapa,baixa.cod,materiais.codigo,dados.numero,materiais.prazo[Ô]

Agora eu tenho uma outra tabela (TBRequisita) com dois campos (Matricula - Codigo) e essa tabela que tenho que usar como paramentro de calculo de datas na rotina de preencher os dados no Grid. Estou mandando o exemplo para um entendimento melhor.

Bom, a bolinha colorida que insiro na coluna (0) do grid só pode ficar verde, amarela, ou vermellha baseando-se nos items cadastrados na tabela (TBRequisita), para os outros não ha mudanças. A rotina esta na Sub PreencheGridDatas.

Conto com a colaboração dos colega.
IRENKO 12/02/2010 16:14:21
#334280
Essa é a Query que tentei usar com a tabela (TbRequisita):

mSql = [Ô]SELECT Baixa.nome,baixa.material,Baixa.Chapa,Baixa.Cod,Max(Baixa.Data2) AS Maior_Data,Materiais.Codigo,materiais.prazo,dados.Numero,TbRequisita.Codigo FROM ((Baixa [Ô] & _
[Ô] INNER JOIN dados ON Baixa.Chapa = dados.numero) [Ô] & _
[Ô] INNER JOIN materiais ON materiais.codigo = baixa.cod) [Ô] & _
[Ô] INNER JOIN TbRequisita ON TbRequisita.Codigo = Materiais.Codigo[Ô] & _
[Ô] WHERE Baixa.Nome = [ô][Ô] & Criterio_Nome & [Ô][ô]GROUP BY baixa.nome,baixa.material,baixa.chapa,baixa.cod,materiais.codigo,dados.numero,materiais.prazo,TbRequisita.Codigo[Ô]

Fazendo o teste usando como criterio o funcionario ANTONIO CARLOS ALVES DA SILVA. Observando com a consulta usando a primeira query, o item (BONE DE BRIM MODELO KUTTNER) deveria estar com a bolinha AZUL, pois o codigo do mesmo não esta na tabela (TBRequisita).

Já usando a query acima, o item fica com a bolinha amarela e sem as datas. Deu pra entender?
IRENKO 17/02/2010 11:11:58
#334558
Pessoal, o bicho tá pegando e preciso de ajuda nessa consulta. O exemplo que postei demostra conforme a legenda no Form aquilo que pretendo. Consegui fazer montar as bolinhas coloridas na coluna 0 do grid, mas tem uns detalhes que não consigo encontrar uma solução.

Bom partimos em primeiro lugar com as bolinhas Verde e vermelha, elas só devem aparecer atraves da comparação das 03 tabelas (Baixa,Materiais e TbRequisita). Os campos para relacionamento entre elas são:

Tabela Baixa Campos (Chapa e Cod)
Tabela Materiais Campo (Codigo)
Tabela TbRequisita Campos (Matricula e Codigo)

Tomando como exemplo de pesquisa o funcionario ANTONIO CARLOS ALVES DA SILVA (Um click no Grid um para carregar as datas no Grid2). Os itens CAMISA DE BRIM Nº1 E Nº2, para esse funcionario chapa(1827.9) os codigos desses materiais não estão cadastrados na Tabela TbRequisita, portanto a bolinha tinha que ser azul, deu pra entender? Na realidade não estou conseguindo é relacionar os campos chaves de cada tabela e compar-los via codigo.

Chapa
IRENKO 17/02/2010 16:36:54
#334605
Tá bom gente, sei que essa pode estar meio complicada mas peço apenas uma dica, como que faço um select para marcar na coluna 0 do Grid com qualquer bolinha somentes os items que consta na tabela TbRequisita de acordo com o funcionario selecionado no Grid1?
DANIKULL 17/02/2010 18:22:43
#334617
Resposta escolhida
IRENKO, boa tarde.

Viu ver se consigo te ajudar, agora tira umas dúvidas minha.
-> Em que situação muda a cor da bolinha???
-> Qual a cor da bolinha inicial??

Obrigado.
IRENKO 17/02/2010 18:45:09
#334618
Segue a regra da legenda no form, mas para inicio somente a vermelha e verde que são as iniciais, mas só devo marcar se o funcionario tiver os items cadastrados na tabela TbRequisição. Na TbRequisição o funcionario é identificado pelo numero da matricula e os materiais que ele deve requisitar identificado pelo codigo.
DANIKULL 17/02/2010 19:43:40
#334620
IRENKO, boa noite....

Inclui mais um INNER JOIN na consulta, veja se é isso que você precisa, onde:

           mSql = [Ô]SELECT Baixa.nome, Baixa.material, Baixa.Chapa, Baixa.Cod, Max(Baixa.Data2) AS Maior_Data, materiais.Codigo, materiais.prazo, dados.Numero [Ô]
mSql = mSql & [Ô]FROM ((Baixa [Ô]
mSql = mSql & [Ô]INNER JOIN dados ON Baixa.Chapa = dados.numero) [Ô]
mSql = mSql & [Ô]INNER JOIN materiais ON Baixa.cod = materiais.codigo) [Ô]
mSql = mSql & [Ô][txt-color=#e80000]INNER JOIN TbRequisita ON Baixa.Cod = TbRequisita.Codigo[/txt-color] [Ô]
mSql = mSql & [Ô]Where Baixa.Nome =[ô][Ô] & Criterio_Nome & [Ô][ô] [Ô]
mSql = mSql & [Ô]GROUP BY Baixa.nome, Baixa.material, Baixa.Chapa, Baixa.Cod, materiais.Codigo, materiais.prazo, dados.Numero [Ô]


O item em destaque foi o acrescentado.
IRENKO 18/02/2010 10:05:44
#334660
DANIKULL, depois de queimar um dos meu neurônios, restou só um hehehe... montei a primeira parte do codigo para as bolinhas Verde e Vermelha, agora vou partir para as outras, veja como ficou ai vai entender o que eu pretendia.

Private Sub Verefica()
Dim i As Integer
Set Dados = New ADODB.Recordset
If Dados.State = 1 Then Dados.Close
With Dados
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.LockType = adLockPessimistic
mSql = [Ô]SELECT TbRequisita.Matricula,TbRequisita.Codigo AS C1,Baixa.Chapa,Baixa.Cod AS C2, Baixa.material FROM (TbRequisita [Ô] & _
[Ô] INNER JOIN Baixa ON Baixa.Chapa = TbRequisita.Matricula) [Ô] & _
[Ô]Where Baixa.Chapa =[ô][Ô] & Criterio_Chapa & [Ô][ô] GROUP BY Baixa.Chapa, Baixa.Cod, baixa.material,TbRequisita.Matricula,TbRequisita.Codigo [Ô]
.Source = mSql
.ActiveConnection = ConexaoEPI
.Open
If .BOF = True And .EOF = True Then Exit Sub

Do While Not .EOF
For i = 1 To Grid.Rows - 1 [ô]percorro linha a linha do grid
If UCase(Grid.TextMatrix(i, 1)) = UCase(!Material) And !C1 = !C2 Then
If IsDate(Grid.TextMatrix(i, 2)) And IsDate(Grid.TextMatrix(i, 3)) Then
DTInicial = Format(Grid.TextMatrix(i, 3), [Ô]dd-mm-yyyy[Ô])
DTFinal = Format(Now, [Ô]dd-mm-yyyy[Ô])
If DTInicial < DTFinal Then
Grid.Col = 0
Grid.Row = i
Set Grid.CellPicture = ListImg.ListImages(4).Picture [ô]Fora do prazo
Grid.CellPictureAlignment = 4 [ô]CenterCenter
Else
Grid.Col = 0
Grid.Row = i
Set Grid.CellPicture = ListImg.ListImages(1).Picture [ô]Dentro do prazo
Grid.CellPictureAlignment = 4 [ô]CenterCenter
End If
End If
End If
Next i
.MoveNext
Loop
End With
End Sub
Tópico encerrado , respostas não são mais permitidas