Validação em DBGrid - TADOQUERY
Caras, sei q o tópico ta extenso, sendo cansativo, chato,etc. mas nesse momento se faz necessário.
Estou desde Sexta-Feira tentando fazer, e não conseguindo, com a ajuda do Programador Marco Sales (a quem agradeço a atenção) uma exibição em DBGrid.
O quadro eh o seguinte: Tenho um Form de Entradas de Produtos, referenciando duas tabelas: TbMovimentos (Grava os dados da compra) e TbEntradas (Grava os itens q estão sendo comprados). Na tabela TbMovimentos tenho um campo CodMov, existente tambem na TbEntradas. Este campo serve para fazer a indexação dos itens com seu respectivo movimento. Certo até aí???
Bom, estou usando BASE DE DADOS MS ACCESS. Para fazer esta consulta tenho um TADOQUERY ligado a TbEntradas, um DATASOURCE ligado ao TADOQUERY e o DBGRID ligado ao DATASOURCE.
Na propriedade SQL do TADOQUERY tenho:
SELECT * FROM TbEntradas
Na Procedure de Consulta eu tinha:
procedure TFrmEntradasProdutos.Mostrar_Itens (Codigo: String);
begin
Try
QryItensNF.Close;
QryItensNF.SQL.Clear ;
QryItensNF.SQL.Add (´ SELECT * FROM TbEntradas Where = ´ + QuotedStr (Codigo));
QryItensNF.Open;
Except
On e:exception Do
begin
MessageDlg(´Erro ao localizar Registro!´ + #1310 + e.message,mterror,[mbok],0);
QryItensNF.Close ;
end;
End;
procedure TFrmEntradasProdutos.BtnAdicionarClick(Sender: TObject);
begin
Mostrar_Itens (EdtCodigo.Text);
end;
Deste jeito ele buscava todos os registros da TbEntradas, bastando para isso ser digitado um valor qualquer no EdtCodigo, independente se existisse o Codigo do Movimento (CodMov).
Por Ex: Todos os registros da TbEntradas tinham no campo CodMov o Valor 1. Se digitasse 2, ele buscava todos os registros, ou seja, ele não validava a condição. Com a ajuda do outro Programador fiz alterações na Procedure de Consulta:
procedure TFrmEntradasProdutos.Mostrar_Itens;
begin
Try
QryItensNF.Close;
QryItensNF.SQL.Clear ;
QryItensNF.SQL.Add (´ SELECT * FROM TbEntradas´);
QryItensNF.Sql.Add(´Where CodMov =: CodigoPesquisado´);
QryItensNF.ParamByName(´CodigoPesquisado´).asInteger:=StrToInt (EdtCodigo.Text);
QryItensNF.Prepare;
QryItensNF.Open;
Except
On e:exception Do
begin
MessageDlg(´Erro ao localizar Registro!´ + #1310 + e.message,mterror,[mbok],0);
QryItensNF.Close ;
end;
End;
end;
Para chamar a Procedure tenho:
procedure TFrmEntradasProdutos.BtnAdicionarClick(Sender: TObject);
begin
Mostrar_Itens;
end;
Ocorre q agora não copmpila. Esse codigo que ele me enviou creio que seja para trabalhar com TQUERY, só que tenho de trabalhar com TADOQUERY pois a BD eh MS Access. O erro que da eh q ele não reconhece o procedimento ´ParamByName´ tampouco ´Prepare´. É esse o dilema. Por que ta ocorrendo isso??? Posso ta falando bobagem mas será q não tem q haver alguma inclusão na clausula Uses??? Isso eh o q ta me parecendo.
Sempre obtive ajuda imprescindivel aqui, tenho certeza q vao me ajudar de novo!!!! :)
Valeu !!!
Desculpa a extensão do tópico!!!!
Estou desde Sexta-Feira tentando fazer, e não conseguindo, com a ajuda do Programador Marco Sales (a quem agradeço a atenção) uma exibição em DBGrid.
O quadro eh o seguinte: Tenho um Form de Entradas de Produtos, referenciando duas tabelas: TbMovimentos (Grava os dados da compra) e TbEntradas (Grava os itens q estão sendo comprados). Na tabela TbMovimentos tenho um campo CodMov, existente tambem na TbEntradas. Este campo serve para fazer a indexação dos itens com seu respectivo movimento. Certo até aí???
Bom, estou usando BASE DE DADOS MS ACCESS. Para fazer esta consulta tenho um TADOQUERY ligado a TbEntradas, um DATASOURCE ligado ao TADOQUERY e o DBGRID ligado ao DATASOURCE.
Na propriedade SQL do TADOQUERY tenho:
SELECT * FROM TbEntradas
Na Procedure de Consulta eu tinha:
procedure TFrmEntradasProdutos.Mostrar_Itens (Codigo: String);
begin
Try
QryItensNF.Close;
QryItensNF.SQL.Clear ;
QryItensNF.SQL.Add (´ SELECT * FROM TbEntradas Where = ´ + QuotedStr (Codigo));
QryItensNF.Open;
Except
On e:exception Do
begin
MessageDlg(´Erro ao localizar Registro!´ + #1310 + e.message,mterror,[mbok],0);
QryItensNF.Close ;
end;
End;
procedure TFrmEntradasProdutos.BtnAdicionarClick(Sender: TObject);
begin
Mostrar_Itens (EdtCodigo.Text);
end;
Deste jeito ele buscava todos os registros da TbEntradas, bastando para isso ser digitado um valor qualquer no EdtCodigo, independente se existisse o Codigo do Movimento (CodMov).
Por Ex: Todos os registros da TbEntradas tinham no campo CodMov o Valor 1. Se digitasse 2, ele buscava todos os registros, ou seja, ele não validava a condição. Com a ajuda do outro Programador fiz alterações na Procedure de Consulta:
procedure TFrmEntradasProdutos.Mostrar_Itens;
begin
Try
QryItensNF.Close;
QryItensNF.SQL.Clear ;
QryItensNF.SQL.Add (´ SELECT * FROM TbEntradas´);
QryItensNF.Sql.Add(´Where CodMov =: CodigoPesquisado´);
QryItensNF.ParamByName(´CodigoPesquisado´).asInteger:=StrToInt (EdtCodigo.Text);
QryItensNF.Prepare;
QryItensNF.Open;
Except
On e:exception Do
begin
MessageDlg(´Erro ao localizar Registro!´ + #1310 + e.message,mterror,[mbok],0);
QryItensNF.Close ;
end;
End;
end;
Para chamar a Procedure tenho:
procedure TFrmEntradasProdutos.BtnAdicionarClick(Sender: TObject);
begin
Mostrar_Itens;
end;
Ocorre q agora não copmpila. Esse codigo que ele me enviou creio que seja para trabalhar com TQUERY, só que tenho de trabalhar com TADOQUERY pois a BD eh MS Access. O erro que da eh q ele não reconhece o procedimento ´ParamByName´ tampouco ´Prepare´. É esse o dilema. Por que ta ocorrendo isso??? Posso ta falando bobagem mas será q não tem q haver alguma inclusão na clausula Uses??? Isso eh o q ta me parecendo.
Sempre obtive ajuda imprescindivel aqui, tenho certeza q vao me ajudar de novo!!!! :)
Valeu !!!
Desculpa a extensão do tópico!!!!
Diorgenes175
Curtidas 0
Respostas
Ilanocf
20/01/2004
Modifique a linha:
para a linha:
QryItensNF.ParamByName(´CodigoPesquisado´).asInteger:=StrToInt (EdtCodigo.Text);
para a linha:
QryItensNF.[color=red:68ecff096e]Parameters.[/color:68ecff096e]ParamByName(´CodigoPesquisado´).asInteger:=StrToInt (EdtCodigo.Text);
GOSTEI 0
Diorgenes175
20/01/2004
Cara, me da uma força aí. Fiz o q tu escreveu e compilou, mas nao ta dando certo :-\. Da uma analisada no Código:
Pra entender: Eu digito o valor num Edit referindo o Codigo do Movimento e ele mostra todos os registros q possuem este mesmo Codigo do Movimento.
OBS.: Tentando consertar fiz algumas alterações...
procedure TFrmEntradasProdutos.Mostrar_Itens;
begin
Try
QryItensNF.Close;
QryItensNF.SQL.Clear ;
QryItensNF.SQL.Add (´ SELECT * FROM TbEntradas Where CodMov = ´+ (CodMov));
QryItensNF.Parameters.ParamByName(´CodMov´).Value:= StrToInt(EdtCodigo.Text);
QryItensNF.Prepared;
QryItensNF.Open;
Except
On e:exception Do
begin
MessageDlg(´Erro ao localizar Registro!´ + #1310 + e.message,mterror,[mbok],0);
QryItensNF.Close ;
end;
End;
end;
procedure TFrmEntradasProdutos.BtnAdicionarClick(Sender: TObject);
begin
CodMov:= EdtCodigo.Text;
QryItensNF.Open;
QryItensNF.Locate(´Codigo´, CodMov, [loPartialKey]);
Mostrar_Itens;
end;
end.
Pra entender: Eu digito o valor num Edit referindo o Codigo do Movimento e ele mostra todos os registros q possuem este mesmo Codigo do Movimento.
OBS.: Tentando consertar fiz algumas alterações...
procedure TFrmEntradasProdutos.Mostrar_Itens;
begin
Try
QryItensNF.Close;
QryItensNF.SQL.Clear ;
QryItensNF.SQL.Add (´ SELECT * FROM TbEntradas Where CodMov = ´+ (CodMov));
QryItensNF.Parameters.ParamByName(´CodMov´).Value:= StrToInt(EdtCodigo.Text);
QryItensNF.Prepared;
QryItensNF.Open;
Except
On e:exception Do
begin
MessageDlg(´Erro ao localizar Registro!´ + #1310 + e.message,mterror,[mbok],0);
QryItensNF.Close ;
end;
End;
end;
procedure TFrmEntradasProdutos.BtnAdicionarClick(Sender: TObject);
begin
CodMov:= EdtCodigo.Text;
QryItensNF.Open;
QryItensNF.Locate(´Codigo´, CodMov, [loPartialKey]);
Mostrar_Itens;
end;
end.
GOSTEI 0
Ilanocf
20/01/2004
Vamos tentar de uma forma um pouco diferente:
Troque a consulta:
Por esta:
[color=red:918f4b5016][b:918f4b5016]
WITH QryItensNF DO
Begin
Close;
SQL.Clear ;
SQL.Add(´SELECT * FROM TbEntradas´);
SQL.Add(´Where CodMov=:P1´);
Parameters.ParamByName(´P1´).Value:=StrToIntDef(EdtCodigo.Text, 0);
Prepared;
Open;[/b:918f4b5016][/color:918f4b5016]
Dessa forma é mais fácil o sistema ler a consulta. Se não der certo poste aqui a mensagem de erro, ok?
Espero ter ajudado e boa sorte.
Troque a consulta:
procedure TFrmEntradasProdutos.Mostrar_Itens;
begin
Try
QryItensNF.Close;
QryItensNF.SQL.Clear ;
QryItensNF.SQL.Add (´ SELECT * FROM TbEntradas Where CodMov = ´+ (CodMov));
QryItensNF.Parameters.ParamByName(´CodMov´).Value:= StrToInt(EdtCodigo.Text);
QryItensNF.Prepared;
QryItensNF.Open;
Por esta:
[color=red:918f4b5016][b:918f4b5016]
WITH QryItensNF DO
Begin
Close;
SQL.Clear ;
SQL.Add(´SELECT * FROM TbEntradas´);
SQL.Add(´Where CodMov=:P1´);
Parameters.ParamByName(´P1´).Value:=StrToIntDef(EdtCodigo.Text, 0);
Prepared;
Open;[/b:918f4b5016][/color:918f4b5016]
Dessa forma é mais fácil o sistema ler a consulta. Se não der certo poste aqui a mensagem de erro, ok?
Espero ter ajudado e boa sorte.
GOSTEI 0
Diorgenes175
20/01/2004
Cara, coloquei a tua dica no meu projeto, mas ocorre um erro na linha ´Parameters.ParamByName(´CodMov´).Value:=StrToIntDef(EdtCodigo.Text, 0);´. Ele não reconhece o parametro ´CodMov´ (tu tinha colocado ´P1´ eu penso q era uma especie de variavel).Já tentei colocar ´codigo´ e deu o mesmo erro.
A mensagem de erro é: ´QryItensNF: Parameter ´CodMov´ not found´
Ou seja, ele não reconhece o parametro CodMov. E este é o código completo:
With QryItensNF Do
begin
Close;
SQL.Clear ;
SQL.Add(´SELECT * FROM TbEntradas´);
SQL.Add(´Where CodMov=1´);
Parameters.ParamByName(´CodMov´).Value:=StrToIntDef(EdtCodigo.Text, 0);
Prepared;
Open;
End
Tchê, porque q ocorre isso?????
Valeu a Ajuda!!!!
A mensagem de erro é: ´QryItensNF: Parameter ´CodMov´ not found´
Ou seja, ele não reconhece o parametro CodMov. E este é o código completo:
With QryItensNF Do
begin
Close;
SQL.Clear ;
SQL.Add(´SELECT * FROM TbEntradas´);
SQL.Add(´Where CodMov=1´);
Parameters.ParamByName(´CodMov´).Value:=StrToIntDef(EdtCodigo.Text, 0);
Prepared;
Open;
End
Tchê, porque q ocorre isso?????
Valeu a Ajuda!!!!
GOSTEI 0
Ilanocf
20/01/2004
Na verdade o P1 não é uma variável, é um parâmetro, como o CodMov q vc está colocando. Acho assim bem melhor, caso precise de mais parâmetros coloco P2, P3, ...
Agora vamos fazer o seguinte. No próprio Access crie a consulta q vc deseja, converta-a em SQL e depois coloque um novo ADOQuery e copie o código SQL do Access para a propriedade de sua Query e coloque o Active como True e veja se dá algum problema. Por exemplo:
Tenho uma tabela chamada TB_Disciplinas, e no SQL Access:
Altere o SQL no Delphi (propriedade SQL do ADOQuery) para:
Onde o número 1 será o número do código do curso.
Depois mude a propriedade Active para False e na linha [color=blue:a241869d04]WHERE CodigoDoCurso=1[/color:a241869d04] altere para [color=red:a241869d04]WHERE CodigoDoCurso=:P1[/color:a241869d04]
O código no evento OnClick do botão ficaria apenas assim:
Parameters.ParamByName(´P1´).Value:=StroToIntDef(Edit1.Text, 0);
Open;
Agora vamos fazer o seguinte. No próprio Access crie a consulta q vc deseja, converta-a em SQL e depois coloque um novo ADOQuery e copie o código SQL do Access para a propriedade de sua Query e coloque o Active como True e veja se dá algum problema. Por exemplo:
Tenho uma tabela chamada TB_Disciplinas, e no SQL Access:
SELECT TB_Disciplinas.CodigoDaDisciplina, TB_Disciplinas.CodigoDoCurso, TB_Disciplinas.NomeDaDisciplina
FROM TB_Disciplinas
WHERE (((TB_Disciplinas.CodigoDoCurso)=1));
Altere o SQL no Delphi (propriedade SQL do ADOQuery) para:
SELECT * FROM TB_Disciplinas
WHERE CodigoDoCurso=1;
Onde o número 1 será o número do código do curso.
Depois mude a propriedade Active para False e na linha [color=blue:a241869d04]WHERE CodigoDoCurso=1[/color:a241869d04] altere para [color=red:a241869d04]WHERE CodigoDoCurso=:P1[/color:a241869d04]
O código no evento OnClick do botão ficaria apenas assim:
Parameters.ParamByName(´P1´).Value:=StroToIntDef(Edit1.Text, 0);
Open;
GOSTEI 0
Diorgenes175
20/01/2004
Meu, o caso e q eu não tava pensando em fazer consulta em Access para isso...Tava tentando buscar direto da tabela, mas vou fazer o q tu disse. Mas eu não entendi uma coisa (é q eu não sou um ´Expert´ em SQL): me explica direito esse esquema do parametro ´P1´. Eu necessariamente tenho q declarar ´P1´??? Se tiver, eu já fiz isso, e deu o mesmo erro de ´Parametro inexistente´! To quase disistindo e jogando o PC pela janela. Só não jogo porque é bom, novo, e não é meu. ehehehe!!!!! :-)
Ahh..Nunca fiz a conversão de consulta Access e não faço a minima ideia de como se faz...
Se puder me ajudar fico grato... :-|
Valeu a ajuda!!
Ahh..Nunca fiz a conversão de consulta Access e não faço a minima ideia de como se faz...
Se puder me ajudar fico grato... :-|
Valeu a ajuda!!
GOSTEI 0
Ilanocf
20/01/2004
Eu necessariamente tenho q declarar ´P1´???
Não. P1 é pq, para mim, fica mais fácil saber quem é quem no parâmetro. Mas vc pode utilizar outro parâmetro se quiser.
Ahh..Nunca fiz a conversão de consulta Access e não faço a minima ideia de como se faz...
Vc só precisa criar sua consulta no Access, normalmente e na linha critérios informar o parâmetro, por exemplo, no seu caso digite na linha critérios logo abaixo da coluna do campo CodMov o valor 2, então ele irá buscar po movimento q tiver aquele valor, ok? Bem, depois disso entre novamente na estrutura de sua consulta Access e lá naquela parte cinza ao lado da tabela clique com o botão direito do mouse e clique em Modo SQL, selecione o código e copie-o para sua Query e faça o teste, só não esqueça q a Query não aceita os parênteses:
Consulta Access:
SELECT TB_Disciplinas.CodigoDaDisciplina, TB_Disciplinas.CodigoDoCurso, TB_Disciplinas.NomeDaDisciplina
FROM TB_Disciplinas
WHERE (((TB_Disciplinas.CodigoDoCurso)=2));
Consulta na Query:
SELECT TB_Disciplinas.CodigoDaDisciplina, TB_Disciplinas.CodigoDoCurso, TB_Disciplinas.NomeDaDisciplina
FROM TB_Disciplinas
WHERE TB_Disciplinas.CodigoDoCurso=2;
ou
SELECT * FROM TB_Disciplinas
WHERE TB_Disciplinas.CodigoDoCurso=2;
Depois, q colocar sua consulta como Active = True e der certo o código, no lugar do valor 2 coloque seu parâmetro P1, seguido de dois pontos ( : ), assim:
SELECT * FROM TB_Disciplinas
WHERE TB_Disciplinas.CodigoDoCurso:=P1;
E no botão (evento OnClick) o código:
Parameters.ParamByName(´P1´).Value:=StroToIntDef(Edit1.Text, 0);
Open;
Lembre-se de q o seu parâmetro pode ser como vc desejar: P1, Cod1, etc...
Outra coisa, o parâmetro q vc estava colocando [b:e8340339a7]CodMov[/b:e8340339a7] era igual ao nome do campo? Se for não dá certo, por isso é importante ser algo bem simples. Qualquer coisa visite a minha página sobre Access, lá mostra como se faz uma consulta: [url]br.geocities.com/linkotecabr[/url].
Boa sorte,
Ilano.
GOSTEI 0
Diorgenes175
20/01/2004
Meu, eu so consegui ler hoje (23/01/04) a tua resposta. Cara, sem querer eu consegui fazer exatamente o que tu disse na ultima resposta, sem precisar fazer consulta no Access!! Eu deixei a linha q trata do parametro como comentario...e funcionou (dava erro no parametro referenciado, ali no exemplo ´CODIGO´). Na tua visão, posso ter algum
porblema fazendo deste jeito? Eu acho q não... Mas se tu for notar, eu codifiquei o parametro, sendo assim está errado pois o parametro (onde ta escrito 10) tem de ser uma variável. Eis o Codigo:
procedure TFrmEntradasProdutos.BtnMostrarClick(Sender: TObject);
begin
With QryItensNF Do
begin
Close;
SQL.Clear ;
SQL.Add(´SELECT * FROM TbEntradas Where CodMov=10´);
//Parameters.ParamByName(´CODIGO´).Value:=StrToIntDef(EdtCodigo.Text, 0);
Prepared;
Open;
End
end;
end.
Portanto, agradecendo tua atenção e ajuda, eu só gostaria q tu me orientasse a como fazer para lançar o Parametro numa especie de variavel e aí tá feito.
Valeu a Ajuda!!!!
porblema fazendo deste jeito? Eu acho q não... Mas se tu for notar, eu codifiquei o parametro, sendo assim está errado pois o parametro (onde ta escrito 10) tem de ser uma variável. Eis o Codigo:
procedure TFrmEntradasProdutos.BtnMostrarClick(Sender: TObject);
begin
With QryItensNF Do
begin
Close;
SQL.Clear ;
SQL.Add(´SELECT * FROM TbEntradas Where CodMov=10´);
//Parameters.ParamByName(´CODIGO´).Value:=StrToIntDef(EdtCodigo.Text, 0);
Prepared;
Open;
End
end;
end.
Portanto, agradecendo tua atenção e ajuda, eu só gostaria q tu me orientasse a como fazer para lançar o Parametro numa especie de variavel e aí tá feito.
Valeu a Ajuda!!!!
GOSTEI 0
Ilanocf
20/01/2004
Sabe, depois de pensar mais um pouco, lembrei de um detalhe, talvez vc esteja usando Access 2000, se for, então tente deixar as linhas:
Assim:
[color=red:5d72985836]SQL.Add(´SELECT * FROM TbEntradas Where CodMov= :CODIGO);
Parameters.ParamByName(´CODIGO´).Value:=StrToIntDef(EdtCodigo.Text, 0); [/color:5d72985836]
Diferença pequena, não? Afaste o [color=red:5d72985836][b:5d72985836]:CODIGO[/b:5d72985836][/color:5d72985836] do sinal de igualdade.
Espero ter ajudado.
SQL.Add(´SELECT * FROM TbEntradas Where CodMov=:CODIGO´);
Parameters.ParamByName(´CODIGO´).Value:=StrToIntDef(EdtCodigo.Text, 0);
Assim:
[color=red:5d72985836]SQL.Add(´SELECT * FROM TbEntradas Where CodMov= :CODIGO);
Parameters.ParamByName(´CODIGO´).Value:=StrToIntDef(EdtCodigo.Text, 0); [/color:5d72985836]
Diferença pequena, não? Afaste o [color=red:5d72985836][b:5d72985836]:CODIGO[/b:5d72985836][/color:5d72985836] do sinal de igualdade.
Espero ter ajudado.
GOSTEI 0
Diorgenes175
20/01/2004
Meu, desse jeito não funcionou. Dá uma olhada no código e depois me responda:
Note q a linha ´Parameters.ParamByName´ está como comentário e tb q na linha anterior o parametro eh ´10´. ´10´ é o codigo do movimento que eu inseri manualmente direto no Access para fazer um teste. Assim uncionou beleza, porém ele sempre vai buscar os registros q comtenham o valor ´10´ no campo ´CodMov´, pois está codificado um valor como parametro, entende? O que eu queria q tu me ajudasse é a descobrir uma forma de lançar este parametro (no caso deste exemplo ´10´) numa variavel.
Eis o codigo:
Procedure ...
With QryItensNF Do
begin
Close;
SQL.Clear ;
SQL.Add(´SELECT * FROM TbEntradas Where CodMov=10´);
// Parameters.ParamByName(´Codigo´).Value:=StrToIntDef(EdtCodigo.Text, 0);
Prepared;
Open;
End
end;
Desse jeito deu certo mas sempre buscando pelo valor 10. Estou usando Access 2000... desculpe não ter informado antes...
Desculpa o incomodo...
Valeu a ajuda!!!
Note q a linha ´Parameters.ParamByName´ está como comentário e tb q na linha anterior o parametro eh ´10´. ´10´ é o codigo do movimento que eu inseri manualmente direto no Access para fazer um teste. Assim uncionou beleza, porém ele sempre vai buscar os registros q comtenham o valor ´10´ no campo ´CodMov´, pois está codificado um valor como parametro, entende? O que eu queria q tu me ajudasse é a descobrir uma forma de lançar este parametro (no caso deste exemplo ´10´) numa variavel.
Eis o codigo:
Procedure ...
With QryItensNF Do
begin
Close;
SQL.Clear ;
SQL.Add(´SELECT * FROM TbEntradas Where CodMov=10´);
// Parameters.ParamByName(´Codigo´).Value:=StrToIntDef(EdtCodigo.Text, 0);
Prepared;
Open;
End
end;
Desse jeito deu certo mas sempre buscando pelo valor 10. Estou usando Access 2000... desculpe não ter informado antes...
Desculpa o incomodo...
Valeu a ajuda!!!
GOSTEI 0
Ilanocf
20/01/2004
Faça o seguinte, então:
procedure TFrmEntradasProdutos.Mostrar_Itens;
Var
VMov: Integer;
begin
...sua SQL...
VMov:=QryItensNF.CodMov.Value;
...
SeuCampo.Value:=VMov;
...resto do seu comando...
end;
GOSTEI 0
Diorgenes175
20/01/2004
Cara, desculpa eu ainda estar no mesmo empecilho. A forma q tu me orientou a fazer para lançar o parametro numa variavel tava meio vaga, mas eu fiz algo semelhante. Ficou assim:
Procedure...
var
RegMov: String; // => como integer ocorria incompatibilidade
begin
With QryItensNF Do
begin
Close;
SQL.Clear;
RegMov:= FldCodMovimento.Text;
SQL.Add(´SELECT * FROM TbEntradas Where CodMov= :RegMov´);
Prepared;
Open;
End
end;
O q ocorre eh q desse jeito nao aparece nenhum registro... O q ta q errado??? Por que ocorre isso???
Desculpa o incomodo!!!
Valeu a Ajuda!!!
Procedure...
var
RegMov: String; // => como integer ocorria incompatibilidade
begin
With QryItensNF Do
begin
Close;
SQL.Clear;
RegMov:= FldCodMovimento.Text;
SQL.Add(´SELECT * FROM TbEntradas Where CodMov= :RegMov´);
Prepared;
Open;
End
end;
O q ocorre eh q desse jeito nao aparece nenhum registro... O q ta q errado??? Por que ocorre isso???
Desculpa o incomodo!!!
Valeu a Ajuda!!!
GOSTEI 0
Ilanocf
20/01/2004
Tudo bem! Vamos lá,
Tente fazer assim:
Tente fazer assim:
SQL.Add(´SELECT * FROM TbEntradas Where CodMov= :StrToIntDef(RegMov, 0)´);
GOSTEI 0
Diorgenes175
20/01/2004
Mesmo assim não houve resultado. Na mensagem de erro consta ´Objeto parameter definido incorretamente. As informações são inconsistentes ou incompletas´. Há ainda algum erro de sintaxe...
Valeu!!!
Valeu!!!
GOSTEI 0
Ilanocf
20/01/2004
Mude para isto:
SQL.ADD(´SELECT * TBENTRADAS WHERE CODMOV = ´ + REGMOV)
GOSTEI 0
Ilanocf
20/01/2004
Acho q agora isso resolve!
Procedure...
begin
With QryItensNF Do
begin
Close;
SQL.Clear;
SQL.Add(´SELECT * FROM TbEntradas Where CodMov= :RegMov´);
ParamByName(´RegMov´).AsString := FldCodMovimento.Text;
Open;
End
end;
GOSTEI 0
Diorgenes175
20/01/2004
Cara, nem acredito... Funcionou!!!!!!!!!!!!! Com o seguinte codigo:
procedure TFrmEntradasProdutos.BtnMostrarClick(Sender: TObject);
var
RegMov: String;
begin
With QryItensNF Do
begin
Close;
SQL.Clear ;
RegMov:= FldCodMovimento.Text;
SQL.Add (´SELECT * FROM TbEntradas WHERE CodMov= ´ + RegMov);
Prepared;
Open;
End
end;
Faltava uma simples concatenação, o meu projeto tava meio q em banho Maria porque faltava isso, mas agora eu tenho o q precisava. Valeu a ajuda a paciencia, a persistencia e a boa vontade imprescindiveis para todos os usuarios do Clube do Delphi. É com satisfação que participo deste forum, perguntando e colaborando com aquilo q sei.
VALEU MESMO CARA!!!!!!!!!!!!!!
... desculpa o incomodo, mas acho q valeu a pena!!!!!
procedure TFrmEntradasProdutos.BtnMostrarClick(Sender: TObject);
var
RegMov: String;
begin
With QryItensNF Do
begin
Close;
SQL.Clear ;
RegMov:= FldCodMovimento.Text;
SQL.Add (´SELECT * FROM TbEntradas WHERE CodMov= ´ + RegMov);
Prepared;
Open;
End
end;
Faltava uma simples concatenação, o meu projeto tava meio q em banho Maria porque faltava isso, mas agora eu tenho o q precisava. Valeu a ajuda a paciencia, a persistencia e a boa vontade imprescindiveis para todos os usuarios do Clube do Delphi. É com satisfação que participo deste forum, perguntando e colaborando com aquilo q sei.
VALEU MESMO CARA!!!!!!!!!!!!!!
... desculpa o incomodo, mas acho q valeu a pena!!!!!
GOSTEI 0
Ilanocf
20/01/2004
Q bom q vc conseguiu, pois o seu sucesso tb é o nosso, pois só assim tb aprendemos.
Apesar de eu tb ainda não ser um programador tão bom quanto muitos q passam por aqui no fórum, mas estou aprendendo muita coisa com essas feras e tb estou até me arriscando a dar alguma ajuda ou buscar respostas para os meus problemas e de outros amigos.
Mas numa coisa acho q todos nós concordamos com vc, é realmente uma satisfação participarmos deste fórum (perguntando ou respondendo).
Até mais.
Apesar de eu tb ainda não ser um programador tão bom quanto muitos q passam por aqui no fórum, mas estou aprendendo muita coisa com essas feras e tb estou até me arriscando a dar alguma ajuda ou buscar respostas para os meus problemas e de outros amigos.
Mas numa coisa acho q todos nós concordamos com vc, é realmente uma satisfação participarmos deste fórum (perguntando ou respondendo).
Até mais.
GOSTEI 0