SQL em um form de consulta

28/05/2008

1

[color=red:460e37f277]Título editado por Massuda Por favor, não use apenas letras maiúsculas no título/texto. No caso de reincidência, seus tópicos poderão vir a ser bloqueados. Leia as :arrow: [url=http://forum.clubedelphi.net/viewtopic.php?t=6689]Regras de Conduta[/url] do fórum.[/color:460e37f277]

Ola pessoal!!!
Bom se alguem puder me ajudar eu ficaria muito grato!!!
Eu tenho um formulario de cadastro de DOCUMENTO, onde eu tenho vario campos Ex: remetente, Assunto, tipo, especificação, data e assim vai ....
Só que o Remetente é uma Chave estrangeira até ai tudo certo , esta gravando tudo, só que eu tenho um form de CONSULTA DE DOCUMENTOS
onde eu pesquiso por Remetente, data,tipo, Dai quando eu vou no Botao vizualizar todos , dentro do DBGrid só aparece a data e o tipo , o Remetente fica em branco.O que eu tenho que Programar dentro da SQL para aparecer o nome do Rementen?


Responder

Posts

28/05/2008

Catunda

vc precisa apontar o codigo do remetente constante no cadastro documentos ao seu respectivo codigo na tabela de remetentes, dentro da sua instrução sql, através de join ou where.

se vc postar seu codigo de consulta fica mais facil de esclarecer.


Responder

28/05/2008

Paulo

Uma consulta SQL ela te mostra aquilo que vc pedir e que tenha gravado em tabela. Se vc grava tudo, veja se no seu AfterPost, vc tenha um ApplyUpdates(-1)(Caso use CDS). Aí é só trazer num select básico. Se vc der(creio que já sabe)um:
Select * from tabela virá tudo na sua query, ou ir especificando campo a campo. Se não mostra na sua consulta, é porque: Não está gravado ou a sua Query não está trazendo na instrução Select.


Responder

28/05/2008

Rodlima

entao estou usando esse comando aqui

SELECT * FROM CAD_DOCUMENTOS

pra trazer todos os componentes da tabela do cadastro de documento.

só que o rementen nao vem , pq eh chave secundaria.

Obrigado!!


Responder

28/05/2008

Paulo

Como o amigo catunda falou. Tem que colocar na Join, pois se é chave estrangeira, ele existe na tabela mãe dele, então tem que fazer Join.


Responder

28/05/2008

Rodlima

Como o amigo catunda falou. Tem que colocar na Join, pois se é chave estrangeira, ele existe na tabela mãe dele, então tem que fazer Join.


caro amigo mais como eu uso esse comando Join, pois sou novato em programação.
obrigado


Responder

28/05/2008

Rodlima

vc precisa apontar o codigo do remetente constante no cadastro documentos ao seu respectivo codigo na tabela de remetentes, dentro da sua instrução sql, através de join ou where. se vc postar seu codigo de consulta fica mais facil de esclarecer.


me ajuda a usar esse comando Join.


Responder

28/05/2008

Rodlima

Uma consulta SQL ela te mostra aquilo que vc pedir e que tenha gravado em tabela. Se vc grava tudo, veja se no seu AfterPost, vc tenha um ApplyUpdates(-1)(Caso use CDS). Aí é só trazer num select básico. Se vc der(creio que já sabe)um: Select * from tabela virá tudo na sua query, ou ir especificando campo a campo. Se não mostra na sua consulta, é porque: Não está gravado ou a sua Query não está trazendo na instrução Select.


Caro Amigo mais entao no form de documentos esta gravando normal , eu vejo o ibexpert e la o remeten esta gravando normal , só que na consulta de documentos dentro do DBGrid que nao esta aparecendo o campo remetente , pois eh chave estrangeira , como posso fazer pra chamar o campo?
se tiver que usar um Join eu nao sei usar tem como voce dar um exemplo?
ou outro jeitooo
obrigado!


Responder

28/05/2008

Catunda

Usando WHERE :

SELECT A.*,B.NOME_REMETENTE FROM CAD_DOCUMENTOS A, CAD_REMETENTES B
WHERE A.COD_REMET = B.ID_REMETENTE

--------------------------------------------------------------------------------
Usando JOIN :

SELECT A.*,B.NOME_REMETENTE FROM CAD_DOCUMENTOS A
INNER JOIN CAD_REMETENTES B
ON (A.COD_REMET = B.ID_REMETENTE)


Responder

29/05/2008

Rodlima

Usando WHERE : SELECT A.*,B.NOME_REMETENTE FROM CAD_DOCUMENTOS A, CAD_REMETENTES B WHERE A.COD_REMET = B.ID_REMETENTE -------------------------------------------------------------------------------- Usando JOIN : SELECT A.*,B.NOME_REMETENTE FROM CAD_DOCUMENTOS A INNER JOIN CAD_REMETENTES B ON (A.COD_REMET = B.ID_REMETENTE)


O GRANDE PARCEIRO
DEU CERTO JA VIUU
USEI ISSO AQUI

select R.NOME ,DOC.DATA_CAD, DOC.TIPO
FROM CAD_DOCUMENTOS DOC, REMETENTE R
WHERE DOC.ID_COD_REMET = R.ID_CODIGO

MUITO OBRIGADO!!


Responder

30/05/2008

Rodlima

Usando WHERE : SELECT A.*,B.NOME_REMETENTE FROM CAD_DOCUMENTOS A, CAD_REMETENTES B WHERE A.COD_REMET = B.ID_REMETENTE -------------------------------------------------------------------------------- Usando JOIN : SELECT A.*,B.NOME_REMETENTE FROM CAD_DOCUMENTOS A INNER JOIN CAD_REMETENTES B ON (A.COD_REMET = B.ID_REMETENTE)


Agora eu estou no botao de Edit de Remetente, quero que quando clico dentro do edit uma letra ja traz todos os dados que tem tem dentro do Edit estou usando esse comando aqui:

procedure TfrmPesqDoc.edtPesquisa1Change(Sender: TObject);
begin
cdsCadDoc.Close;
sqlCadDoc.Close;
sqlCadDoc.SQL.CLear;
sqlCadDoc.SQL.ADD(´select R.NOME ,DOC.DATA_CAD, DOC.TIPO, DOC.assunto, DOC.data_emiss, DOC.decla_cont, DOC.especificacao, DOC.pessoa_emiss´);
sqlCadDoc.SQL.ADD (´FROM CAD_DOCUMENTOS DOC, REMETENTE R´);
sqlCadDoc.SQL.ADD (´WHERE DOC.ID_COD_REMET = R.ID_CODIGO UPPER(R.NOME)LIKE ´+
UpperCase(quotedStr(´¬´+edtPesquisa1.text+´¬´)+´ORDER BY R.NOME ASC´));
sqlCadDoc.Open;
cdsCadDoc.open;
END;

Mais esta dando um erro na penultima linha de UPPER

Obrigado Amigo!


Responder

30/05/2008

Joaoshi

Colega, parece que falta um AND após o R.ID_CODIGO

sqlCadDoc.SQL.ADD (´WHERE DOC.ID_COD_REMET = R.ID_CODIGO UPPER(R.NOME)LIKE ´+



sqlCadDoc.SQL.ADD (´WHERE DOC.ID_COD_REMET = R.ID_CODIGO [b]AND[/b] UPPER(R.NOME)LIKE ´+


Espero ter ajudado.


Responder

30/05/2008

Rodlima

Colega, parece que falta um AND após o R.ID_CODIGO
sqlCadDoc.SQL.ADD (´WHERE DOC.ID_COD_REMET = R.ID_CODIGO UPPER(R.NOME)LIKE ´+
sqlCadDoc.SQL.ADD (´WHERE DOC.ID_COD_REMET = R.ID_CODIGO [b]AND[/b] UPPER(R.NOME)LIKE ´+
Espero ter ajudado.


grande amigo ficou assim:

sqlCadDoc.SQL.ADD (´WHERE DOC.ID_COD_REMET = R.ID_CODIGO [b]AND [b] UPPER(R.NOME)LIKE ´+

só que esta dando um erro de [ (colchete)
valeu parceiro


Responder

30/05/2008

Martins

Seu código não deve ficar assim:
sqlCadDoc.SQL.ADD (´WHERE DOC.ID_COD_REMET = R.ID_CODIGO [b]AND[/b] UPPER(R.NOME)LIKE ´+


Ele deve ficar assim:

sqlCadDoc.SQL.ADD (´WHERE DOC.ID_COD_REMET = R.ID_CODIGO AND UPPER(R.NOME)LIKE ´+


O colchete colocado fazia parte da tag de formatação aqui do fórum só isso, tenta agora aí.

Boa sorte e bons códigos.


Responder

30/05/2008

Rodlima

Seu código não deve ficar assim:
sqlCadDoc.SQL.ADD (´WHERE DOC.ID_COD_REMET = R.ID_CODIGO [b]AND[/b] UPPER(R.NOME)LIKE ´+
Ele deve ficar assim:
sqlCadDoc.SQL.ADD (´WHERE DOC.ID_COD_REMET = R.ID_CODIGO AND UPPER(R.NOME)LIKE ´+
O colchete colocado fazia parte da tag de formatação aqui do fórum só isso, tenta agora aí. Boa sorte e bons códigos.


Grande Parceirooo deu Certo viu
Muito Obrigado mesmooooooooooooooooooo

viu voce tem em mão ai algum código para pesquisar por data tb??
eu coloquei um de data de inicio e data de fim para pesquisar tb.

mais se voce nao tiver não prescisa nao..
obrigado parceiro!


Responder

30/05/2008

Martins

[quote:f80f6a70fb=´Martins´]Seu código não deve ficar assim:
sqlCadDoc.SQL.ADD (´WHERE DOC.ID_COD_REMET = R.ID_CODIGO [b]AND[/b] UPPER(R.NOME)LIKE ´+
Ele deve ficar assim:
sqlCadDoc.SQL.ADD (´WHERE DOC.ID_COD_REMET = R.ID_CODIGO AND UPPER(R.NOME)LIKE ´+
O colchete colocado fazia parte da tag de formatação aqui do fórum só isso, tenta agora aí. Boa sorte e bons códigos.


Grande Parceirooo deu Certo viu
Muito Obrigado mesmooooooooooooooooooo

viu voce tem em mão ai algum código para pesquisar por data tb??
eu coloquei um de data de inicio e data de fim para pesquisar tb.

mais se voce nao tiver não prescisa nao..
obrigado parceiro![/quote:f80f6a70fb]

Vc usa Firebird?
vc pode usar [color=red:f80f6a70fb][b:f80f6a70fb]Between[/b:f80f6a70fb][/color:f80f6a70fb]

Um pequeno exemplo para vc adaptar aí, não compilei pois estou sem a ferramenta aqui.
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add(´SELECT * FROM VENDAS
WHERE DATA_VENCIMENTO BETWEEN :PDATA1 AND :PDATA2´);
Query1.ParamByName(´PDATA1´).AsDate := StrToDate(edData1.Text);
Query1.ParamByName(´PDATA2´).AsDate := StrToDate(edData2.Text);
Query1.Open;


Boa sorte e bons códigos.


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira