Caro Higor, eu resolveria o teu problema da seguinte maneira
Situação Geral

Formulário da tabela de cursos:
Unit: uCursos
Form: frmCursos
Componentes citados nesse exemplo: ClientDataSet, DBGrid;
Campos da tabela: IdCurso, Curso.

Formulário da tabela de turmas:
Unit: uTurmas
Form: frmTurmas
Componentes citados nesse exemplo: SQLQuery, ClientDataSet e DBGrid;
Componentes da tabela: IdTurma, Turma, IdCurso

Na propriedade SQL da SQLQuery faça o seguinte:
 Select IdTurma, Turma, IdCurso
 From Turmas
 Where IdCurso =:pIdCurso

(Observação: A clausula where do teu exemplo, nesse contexto que voce pede, 
está errada, pois where c.curso_cd_codigo = t.curso_cd_codigo deve deve ter um 
parâmetro da seguinte maneira: where c.curso_cd_codigo =:pt.curso_cd_codigo 
(perceba os dois pontos, ele fica junto a primeira letra do parâmetro, use a 
letra (p) para mostrar que é parâmetro);

pIdCurso é o parâmetro que você vai chamar da outra tabela (Cursos) para que 
seja mostrado apenas os dados do curso selecionado.

Agora selecione o clientDataSet, clique com o botão direito e selecione a opção 
fetch Params (o fetch params permite que você passe o parâmetro pIdCurso do 
ClientDataSet para a Query - fica mais fácil de trabalhar), agora:

Vá na propriedade params do clientDataSet e você verá o pIdCurso lá 
(selecione-o). Agora 
configure as seguintes propriedades:
DataType: ftString (lembre-se deve ser o mesmo tipo de dado da chave primária 
da tabela de cursos)
ParamType: ptInput
OK, sua conexão está configurada e esperando o parâmetro.

Próximos passos:
1º - Crie uma variável public, por exemplo - Id:integer ou string (mesmo tipo 
de dado da 
chave primária), para capturar a chave primária da tabela de cursos;

2º - No evento double click do dbgrid passar a chave primária para a variável
Id := ClientDataSetIdCurso.Value;

3º - No form da tabela de turmas chamar a unit da tabela de cursos. (Para 
referenciar a 
variavel Id)
uses uCursos;

4º - No evento BeforeOpen ClientDataSet faça o seguinte:
var Id: integer ou string
begin
 Id := frmCursos.ClientDataSetIdCurso.Value;
 ClientDataSet.Params['pIdCurso'].asString := Id;

5º - No evento OnShow do frmTurmas:
ClientDataSet.Close; 
ClientDataSet.Open;
Assim toda vez que você der um duplo clique (ou pode ser de outra forma) no 
dbGrid do frmCuros, abrirá o frmTurmas com um select parametrizado chamando 
apenas as turmas do curso referido.
 
Todo dia é dia de renovar nosso destino
         



----- Mensagem original ----
De: tarcan_se <[EMAIL PROTECTED]>
Para: delphi-br@yahoogrupos.com.br
Enviadas: Quarta-feira, 2 de Abril de 2008 0:04:45
Assunto: [delphi-br] Passar parâmetros para a query!

Boa noite pessoa, 
gostaria da ajuda de vocês com uma dúvida

Estou fazendo um Sistema e estou querendo buscar o nome de alguns
campos de umas tabelas partindo da informação vinda de outra, da
seguinte forma.

Tenha as tabelas Turma, Curso.

Quero pegar o nome do Curso que vou comparar com o código que tenha na
tabela de Turma e colocar em outra tela.

Direto no banco fiz os seguintes testes e funcionaram sem problema:

select c.curso_tx_nome from curso c, turma t
where c.curso_cd_codigo = t.curso_cd_codigo

Mas para funcionar no sistema preciso passar como referência o código
do curso que está no form de turma em um edit para uma query que vai
retornar o valor para um edit em outra tela.

Estou querendo saber como faço para passar um Componente como
Parâmetro em uma sequência de comandos SQL para um Query??

Desde já muito obrigado pela ajuda.

[]'s 

Higor


 


      Abra sua conta no Yahoo! Mail, o único sem limite de espaço para 
armazenamento!
http://br.mail.yahoo.com/

[As partes desta mensagem que não continham texto foram removidas]

Responder a