cosultas com componentes criados dinamicamente
Uso o Locate para pesuisa de produtos e em alguma outra parte do meu aplicativo. Porém, é visível a demora da pesquisa usando LOCATE.
Gostaria de saber como posso utilisar outro forma mais eficiente e rápida para fazer pesquisa.
Se possível, mande um exemplo para mim.
Aguardo,
Arnoldo.
Arnoldo Lima
Curtidas 0
Melhor post
Arnoldo Lima
02/12/2008
Obrigado, o código resolveu. Está bom agora.
Tenho só uma última dúvida para encerrarmos essse assunto. Gostaria muito que me ajudasse.
É o seguinte.
Como faço para colocar uma condição " if ... then" nessa busca.
//nova busca começa
QryBusca := TZQuery.Create(Self);
QryBusca.Connection := DM.conexao; QryBusca.Close;
QryBusca.Sql.Clear;
QryBusca.SQL.Add(Select Quantidade, Unidade, Produto, Artigo, Grupo, Marca, PrecoAtacado, PrecoVenda from Produtos);
QryBusca.SQL.Add(WHERE Referencia = :Referencia);
QryBusca.ParamByName(Referencia).AsString := MascEdit8.Text;
QryBusca.Open; MascEdit10.Text := QryBusca.FieldByName(Quantidade).AsString;
MascEdit6.Text := QryBusca.FieldByName(Unidade).AsString;
Label25.Caption := QryBusca.FieldByName(Produto).AsString;
Edit2.Text := QryBusca.FieldByName(Artigo).AsString;
Edit3.Text := QryBusca.FieldByName(Grupo).AsString;
Edit4.Text := QryBusca.FieldByName(Marca).AsString;
if ComboBox5.ItemIndex = 0 then
MascEdit11.Text := FormatFloat(0.#0,,(QryBusca.FieldByName(PrecoAtacado).AsFloat))
else
MascEdit11.Text := FormatFloat(0.#0,,(QryBusca.FieldByName(PrecoVenda).AsFloat));
{ end
else
begin
ShowMessage(Produto não encontrado); --> aqui, se a busca não encontrar o Produto ele avisa.
MascEdit8.SetFocus;
exit;
end; }
//nova busca termina Como faço para colocar o "if ... then" nesse código. Aguardo. Arnoldo
QryBusca := TZQuery.Create(Self);
QryBusca.Connection := DM.conexao; QryBusca.Close;
QryBusca.Sql.Clear;
QryBusca.SQL.Add(Select Quantidade, Unidade, Produto, Artigo, Grupo, Marca, PrecoAtacado, PrecoVenda from Produtos);
QryBusca.SQL.Add(WHERE Referencia = :Referencia);
QryBusca.ParamByName(Referencia).AsString := MascEdit8.Text;
QryBusca.Open; MascEdit10.Text := QryBusca.FieldByName(Quantidade).AsString;
MascEdit6.Text := QryBusca.FieldByName(Unidade).AsString;
Label25.Caption := QryBusca.FieldByName(Produto).AsString;
Edit2.Text := QryBusca.FieldByName(Artigo).AsString;
Edit3.Text := QryBusca.FieldByName(Grupo).AsString;
Edit4.Text := QryBusca.FieldByName(Marca).AsString;
if ComboBox5.ItemIndex = 0 then
MascEdit11.Text := FormatFloat(0.#0,,(QryBusca.FieldByName(PrecoAtacado).AsFloat))
else
MascEdit11.Text := FormatFloat(0.#0,,(QryBusca.FieldByName(PrecoVenda).AsFloat));
{ end
else
begin
ShowMessage(Produto não encontrado); --> aqui, se a busca não encontrar o Produto ele avisa.
MascEdit8.SetFocus;
exit;
end; }
//nova busca termina Como faço para colocar o "if ... then" nesse código. Aguardo. Arnoldo
GOSTEI 1
Mais Respostas
Rodrigo Mourão
01/12/2008
Olá Arnoldo, estarei providenciando !!
abs
GOSTEI 0
Rodrigo Mourão
01/12/2008
Segue video com exemplo.
abs
[#VIDEO-35#]
[#VIDEO-35#]
GOSTEI 0
Arnoldo Lima
01/12/2008
Por getileza, aguarde um pouco enquanto analiso o vídeo. Preciso de um tempo para isso.
Gostaria de tirar mais alguma dúvida sobre o mesmo assunto.
Arnoldo
GOSTEI 0
Arnoldo Lima
01/12/2008
Eu adaptei seu código para o meu sistema.
FUNCIONOU DA SEGUINTE FORMA.
if (Mascedit2.ItemIndex = 0) or (Mascedit2.ItemIndex = 4) then //Escolhe tipo de Pedido pra baixar ou não estoq
begin
Qry := TZQuery.Create(Self);
Qry.Connection := DM.conexao;
DM.TbSaida.First;
while not DM.TbSaida.Eof do
begin
Qry.Close;
Qry.SQL.Add(Select Quantidade from Produtos);
Qry.SQL.Add(WHERE Referencia = :Referencia);
Qry.ParamByName(Referencia).AsString := DM.TbSaida.FieldByName(Produto).asstring;
Qry.Open;
Qry.Edit;
Qry.Fields[0].AsFloat := Qry.Fields[0].AsFloat - DM.TbSaida.FieldByName(Quantidade).Asfloat;
Qry.Post;
DM.TbSaida.Next;
end;
end; //Fim da escolha tipo de Pedido //observação1: Escolho o tipo de pedido, porque as vezes na empresa não precisa dar baixa na quantidade de produtos aí escolhes "Pedido Remessa por exemplo. Esse não daria baixa, o estoque ficaria como estava. //Essa variável eu declarei no início do procedimento: "Qry: TZQuery; " - Lá no início do código. Esse é o código antigo: { //atualiza as quantidades
with TbProduto do
begin
Open;
DM.TbSaida.First;
while not DM.TbSaida.Eof do
begin
//coloca em Fields[0] para código, Fields[1] para referência
Locate(Fields.Fields[1].FieldName,DM.TbSaida.FieldByName(Produto).AsString,[]);
Edit;
FieldByName(Quantidade).Asfloat := FieldByName(Quantidade).asfloat -
DM.TbSaida.FieldByName(Quantidade).Asfloat;
Post;
ApplyUpdates;
DM.TbSaida.Next;
end; // fim do while
end; //fim do with } POR GENTILEZA, DÊ UMA OLHADA E ME DIGA SE ESTÁ TUDO OK OU SE EU POSSO MELHORAR MINHA ADAPTAÇÃO DO CÓDIGO. Ainda sobre esse assunto gostaria de saber se posso adaptar outro LOCATE. Lhe envio em seguida. Grato, Arnoldo
Qry := TZQuery.Create(Self);
Qry.Connection := DM.conexao;
DM.TbSaida.First;
while not DM.TbSaida.Eof do
begin
Qry.Close;
Qry.SQL.Add(Select Quantidade from Produtos);
Qry.SQL.Add(WHERE Referencia = :Referencia);
Qry.ParamByName(Referencia).AsString := DM.TbSaida.FieldByName(Produto).asstring;
Qry.Open;
Qry.Edit;
Qry.Fields[0].AsFloat := Qry.Fields[0].AsFloat - DM.TbSaida.FieldByName(Quantidade).Asfloat;
Qry.Post;
DM.TbSaida.Next;
end;
end; //Fim da escolha tipo de Pedido //observação1: Escolho o tipo de pedido, porque as vezes na empresa não precisa dar baixa na quantidade de produtos aí escolhes "Pedido Remessa por exemplo. Esse não daria baixa, o estoque ficaria como estava. //Essa variável eu declarei no início do procedimento: "Qry: TZQuery; " - Lá no início do código. Esse é o código antigo: { //atualiza as quantidades
with TbProduto do
begin
Open;
DM.TbSaida.First;
while not DM.TbSaida.Eof do
begin
//coloca em Fields[0] para código, Fields[1] para referência
Locate(Fields.Fields[1].FieldName,DM.TbSaida.FieldByName(Produto).AsString,[]);
Edit;
FieldByName(Quantidade).Asfloat := FieldByName(Quantidade).asfloat -
DM.TbSaida.FieldByName(Quantidade).Asfloat;
Post;
ApplyUpdates;
DM.TbSaida.Next;
end; // fim do while
end; //fim do with } POR GENTILEZA, DÊ UMA OLHADA E ME DIGA SE ESTÁ TUDO OK OU SE EU POSSO MELHORAR MINHA ADAPTAÇÃO DO CÓDIGO. Ainda sobre esse assunto gostaria de saber se posso adaptar outro LOCATE. Lhe envio em seguida. Grato, Arnoldo
GOSTEI 0
Arnoldo Lima
01/12/2008
Como ficaria o LOCATE no seguinte código:
//faz busca precisa do código do produto
if DM.TbSaida.Locate(Produto,MascEdit8.Text,[]) then
begin
ShowMessage(O produto já foi lançado);
if Application.MessageBox(SIM para adicionar outro item - NÃO para EDITAR ou FECHAR o PEDIDO,Sair,MB_YESNO + MB_ICONINFORMATION + MB_DEFBUTTON2)= IdYes then
MascEdit8.SetFocus
else
begin
if NumEdit3.Enabled = True then
NumEdit3.SetFocus
else
begin
NumEdit3.Enabled := True;
NumEdit3.SetFocus;
NumEdit4.Enabled := False;
end;
Exit;
end;
end;
//até aqui faz a busca para saber se o código é igual na tabela saída //pega os dados da tabela Produtos e traz para o Pedido
With TbProduto do
begin
Open;
Refresh; //coloa aqui 0 (zero) para buscar pelo código, 1 (um) para buscar pela referência
if Locate(FieldDefs.Items[1].Name,MascEdit8.Text,[]) then
begin
MascEdit10.Text := FieldByName(Quantidade).AsString;
MascEdit6.Text := FieldByName(Unidade).AsString;
Label25.Caption := FieldByName(Produto).AsString;
Edit2.Text := FieldByName(Artigo).AsString;
Edit3.Text := FieldByName(Grupo).AsString;
Edit4.Text := FieldByName(Marca).AsString; if ComboBox5.ItemIndex = 0 then
MascEdit11.Text := FormatFloat(0.#0,,(FieldByName(PrecoAtacado).AsFloat))
else
MascEdit11.Text := FormatFloat(0.#0,,(FieldByName(PrecoVenda).AsFloat));
end
else
begin
ShowMessage(Produto não encontrado);
MascEdit8.SetFocus;
exit;
end;
Close;
end; MascEdit12.Text := 0; Aguardo Arnoldo
if DM.TbSaida.Locate(Produto,MascEdit8.Text,[]) then
begin
ShowMessage(O produto já foi lançado);
if Application.MessageBox(SIM para adicionar outro item - NÃO para EDITAR ou FECHAR o PEDIDO,Sair,MB_YESNO + MB_ICONINFORMATION + MB_DEFBUTTON2)= IdYes then
MascEdit8.SetFocus
else
begin
if NumEdit3.Enabled = True then
NumEdit3.SetFocus
else
begin
NumEdit3.Enabled := True;
NumEdit3.SetFocus;
NumEdit4.Enabled := False;
end;
Exit;
end;
end;
//até aqui faz a busca para saber se o código é igual na tabela saída //pega os dados da tabela Produtos e traz para o Pedido
With TbProduto do
begin
Open;
Refresh; //coloa aqui 0 (zero) para buscar pelo código, 1 (um) para buscar pela referência
if Locate(FieldDefs.Items[1].Name,MascEdit8.Text,[]) then
begin
MascEdit10.Text := FieldByName(Quantidade).AsString;
MascEdit6.Text := FieldByName(Unidade).AsString;
Label25.Caption := FieldByName(Produto).AsString;
Edit2.Text := FieldByName(Artigo).AsString;
Edit3.Text := FieldByName(Grupo).AsString;
Edit4.Text := FieldByName(Marca).AsString; if ComboBox5.ItemIndex = 0 then
MascEdit11.Text := FormatFloat(0.#0,,(FieldByName(PrecoAtacado).AsFloat))
else
MascEdit11.Text := FormatFloat(0.#0,,(FieldByName(PrecoVenda).AsFloat));
end
else
begin
ShowMessage(Produto não encontrado);
MascEdit8.SetFocus;
exit;
end;
Close;
end; MascEdit12.Text := 0; Aguardo Arnoldo
GOSTEI 0
Arnoldo Lima
01/12/2008
DEU ERRO. SOCORRO!!!
Tinha testado somente com um produto, mas quando fui testar com mais deu ERRO.
Vou lhe enviar novamente o novo e o velho código:
if (Mascedit2.ItemIndex = 0) or (Mascedit2.ItemIndex = 4) then //Escolhe Tipo de Pedido - Mascedit2 é o Combobox Tipo de Pedido
begin
Qry := TZQuery.Create(Self);
Qry.Connection := DM.conexao;
DM.TbSaida.First;
while not DM.TbSaida.Eof do
begin
Qry.Close;
Qry.SQL.Add(Select Quantidade from Produtos);
Qry.SQL.Add(WHERE Referencia = :Referencia);
Qry.ParamByName(Referencia).AsString := DM.TbSaida.FieldByName(Produto).asstring;
Qry.Open;
Qry.Edit;
Qry.Fields[0].AsFloat := Qry.Fields[0].AsFloat - DM.TbSaida.FieldByName(Quantidade).Asfloat;
Qry.Post;
DM.TbSaida.Next;
end;
end; //fim da escolha Tipo de Pedido CÓDIGO VELHO - Funcionava beleza e dava baixa nos produtos listados no pedido: { //atualiza as quantidades
with TbProduto do
begin
Open;
DM.TbSaida.First;
while not DM.TbSaida.Eof do
begin
//coloca em Fields[0] para código, Fields[1] para referência
Locate(Fields.Fields[1].FieldName,DM.TbSaida.FieldByName(Produto).AsString,[]);
Edit;
FieldByName(Quantidade).Asfloat := FieldByName(Quantidade).asfloat -
DM.TbSaida.FieldByName(Quantidade).Asfloat;
Post;
ApplyUpdates;
DM.TbSaida.Next;
end; // fim do while
end; //fim do with } Se eu listar mais de 1 produto ele dá erro. A partir do segundo ele já não da baixa no estoque.
begin
Qry := TZQuery.Create(Self);
Qry.Connection := DM.conexao;
DM.TbSaida.First;
while not DM.TbSaida.Eof do
begin
Qry.Close;
Qry.SQL.Add(Select Quantidade from Produtos);
Qry.SQL.Add(WHERE Referencia = :Referencia);
Qry.ParamByName(Referencia).AsString := DM.TbSaida.FieldByName(Produto).asstring;
Qry.Open;
Qry.Edit;
Qry.Fields[0].AsFloat := Qry.Fields[0].AsFloat - DM.TbSaida.FieldByName(Quantidade).Asfloat;
Qry.Post;
DM.TbSaida.Next;
end;
end; //fim da escolha Tipo de Pedido CÓDIGO VELHO - Funcionava beleza e dava baixa nos produtos listados no pedido: { //atualiza as quantidades
with TbProduto do
begin
Open;
DM.TbSaida.First;
while not DM.TbSaida.Eof do
begin
//coloca em Fields[0] para código, Fields[1] para referência
Locate(Fields.Fields[1].FieldName,DM.TbSaida.FieldByName(Produto).AsString,[]);
Edit;
FieldByName(Quantidade).Asfloat := FieldByName(Quantidade).asfloat -
DM.TbSaida.FieldByName(Quantidade).Asfloat;
Post;
ApplyUpdates;
DM.TbSaida.Next;
end; // fim do while
end; //fim do with } Se eu listar mais de 1 produto ele dá erro. A partir do segundo ele já não da baixa no estoque.
GOSTEI 0
Rodrigo Mourão
01/12/2008
Olá Arnoldo, quanto a sua adaptação parece estar tudo ok, sintaticamente sim. Agora você precisa testar seu código para ver se esta ok.
Agora quando a segunda dúvida. Você já está usando locate. Se for mudar para Query o processo é o mesmo demostrado na vídeo.
abs
GOSTEI 0
Arnoldo Lima
01/12/2008
Testei o código, mas só funciona para 1 produto. Quando coloco 2 ou mais para dar baixa na quantidade no estoque dá erro. Ela só aceita um e dá uma mensagem de erro.
if (Mascedit2.ItemIndex = 0) or (Mascedit2.ItemIndex = 4) then //Escolhe Tipo de Pedido - Mascedit2 é o Combobox Tipo de Pedido
begin
Qry := TZQuery.Create(Self);
Qry.Connection := DM.conexao;
DM.TbSaida.First;
while not DM.TbSaida.Eof do
begin
//Qry.Close;
Qry.SQL.Add(Select Quantidade from Produtos);
Qry.SQL.Add(WHERE Referencia = :Referencia);
Qry.ParamByName(Referencia).AsString := DM.TbSaida.FieldByName(Produto).asstring;
Qry.Open;
Qry.Edit;
Qry.Fields[0].AsFloat := Qry.Fields[0].AsFloat - DM.TbSaida.FieldByName(Quantidade).Asfloat;
Qry.Post;
DM.TbSaida.Next;
end;
end; //fim da escolha Tipo de Pedido So atualiza a quantidade de 1 produto no pedido depois dá erro. O que está acontecendo?
begin
Qry := TZQuery.Create(Self);
Qry.Connection := DM.conexao;
DM.TbSaida.First;
while not DM.TbSaida.Eof do
begin
//Qry.Close;
Qry.SQL.Add(Select Quantidade from Produtos);
Qry.SQL.Add(WHERE Referencia = :Referencia);
Qry.ParamByName(Referencia).AsString := DM.TbSaida.FieldByName(Produto).asstring;
Qry.Open;
Qry.Edit;
Qry.Fields[0].AsFloat := Qry.Fields[0].AsFloat - DM.TbSaida.FieldByName(Quantidade).Asfloat;
Qry.Post;
DM.TbSaida.Next;
end;
end; //fim da escolha Tipo de Pedido So atualiza a quantidade de 1 produto no pedido depois dá erro. O que está acontecendo?
GOSTEI 0
Rodrigo Mourão
01/12/2008
Arnoldo,
Você tem que depurar o código, "deu erro" fica muito vago.
Coloque um break point na rotina e depure. Verifique se os valores estão sendo passados corretamente.
Outra coisa existe um comando Prepare que alguns DataSet do Delphi suporte que serve para preparar a query quando criada dinamicamente. Como Zeos é um componente de terceiro eu não posso afirmar mas verifique se ele suporta este método.
Se suportar chame-o antes de passar o valor para o parametro.
abs !!
GOSTEI 0
Arnoldo Lima
01/12/2008
Quando executo o código:
if (Mascedit2.ItemIndex = 0) or (Mascedit2.ItemIndex = 4) then //Escolhe Tipo de Pedido - Mascedit2 é o Combobox Tipo de Pedido
begin
Qry := TZQuery.Create(Self);
Qry.Connection := DM.conexao;
DM.TbSaida.First;
while not DM.TbSaida.Eof do
begin
Qry.Close;
Qry.SQL.Add(Select Quantidade from Produtos);
Qry.SQL.Add(WHERE Referencia = :Referencia);
Qry.ParamByName(Referencia).AsString := DM.TbSaida.FieldByName(Produto).asstring;
Qry.Open;
Qry.Edit;
Qry.Fields[0].AsFloat := Qry.Fields[0].AsFloat - DM.TbSaida.FieldByName(Quantidade).Asfloat;
Qry.Post;
DM.TbSaida.Next;
end;
end; //fim da escolha Tipo de Pedido 1- O que o código faz? R. Procura quantidade da tabela Produtos. Depois edita somente A "Referencia" que está em Produtos de acordo com a TbSaida. Obs. Antes desse código vou colocando um por um os produtos dentro da tabela "TbSaida". 2- O que faço depois? Justamente o código acima. Vou dando baixa na quantidade da tabela "Produtos" um por um até o fim da "TbSaida" onde estão os produtos lançados para venda no momento. O código acima funciona somente para 1 (um) produto na tabela "TbSaida", quando coloco acima de 1 aparece a mensagem abaixo: SQL Error: You have an error your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near
"SelecQuantidade from Produtos WHERE Referencia = 100104" at line 1. Obs. "100104" é a referencia de um dos produtos que estão lançados na TbSaida. Por exemplo: Se lanço os produtos na tabela "TbSaida": 100102 - Celular 100104 - Fone de ouvido 100106- Pen drive O erro acima aparece logo na referência "100104" . Aguardo resposta, Arnoldo
begin
Qry := TZQuery.Create(Self);
Qry.Connection := DM.conexao;
DM.TbSaida.First;
while not DM.TbSaida.Eof do
begin
Qry.Close;
Qry.SQL.Add(Select Quantidade from Produtos);
Qry.SQL.Add(WHERE Referencia = :Referencia);
Qry.ParamByName(Referencia).AsString := DM.TbSaida.FieldByName(Produto).asstring;
Qry.Open;
Qry.Edit;
Qry.Fields[0].AsFloat := Qry.Fields[0].AsFloat - DM.TbSaida.FieldByName(Quantidade).Asfloat;
Qry.Post;
DM.TbSaida.Next;
end;
end; //fim da escolha Tipo de Pedido 1- O que o código faz? R. Procura quantidade da tabela Produtos. Depois edita somente A "Referencia" que está em Produtos de acordo com a TbSaida. Obs. Antes desse código vou colocando um por um os produtos dentro da tabela "TbSaida". 2- O que faço depois? Justamente o código acima. Vou dando baixa na quantidade da tabela "Produtos" um por um até o fim da "TbSaida" onde estão os produtos lançados para venda no momento. O código acima funciona somente para 1 (um) produto na tabela "TbSaida", quando coloco acima de 1 aparece a mensagem abaixo: SQL Error: You have an error your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near
"SelecQuantidade from Produtos WHERE Referencia = 100104" at line 1. Obs. "100104" é a referencia de um dos produtos que estão lançados na TbSaida. Por exemplo: Se lanço os produtos na tabela "TbSaida": 100102 - Celular 100104 - Fone de ouvido 100106- Pen drive O erro acima aparece logo na referência "100104" . Aguardo resposta, Arnoldo
GOSTEI 0
Rodrigo Mourão
01/12/2008
Agora Sim !!!!! Coma mensagem fica claro !!
Vamos lá na minha vídeo eu usei ADO pois não tenho o Zeos. O commandtext no ADO e String já o Seu componente e um TString. Repare voce da ADD.
Sendo Assim sempre que entrar no código tem que dar um Clear se nao ele vai concatenar um select no outro por isso o erro no segundo. Observe:
DM.TbSaida.First;
while not DM.TbSaida.Eof do
begin
Qry.Close;
Qry.Sql.Clear;
Qry.SQL.Add(Select Quantidade from Produtos);
Qry.SQL.Add(WHERE Referencia = :Referencia);
Qry.ParamByName(Referencia).AsString := DM.TbSaida.FieldByName(Produto).asstring;
Qry.Open;
Qry.Edit;
Qry.Fields[0].AsFloat := Qry.Fields[0].AsFloat - DM.TbSaida.FieldByName(Quantidade).Asfloat;
Qry.Post;
DM.TbSaida.Next;
end;
Isso ira resolver !!
Aguardo retorno para encerrar o chamado !!!!
Vamos lá na minha vídeo eu usei ADO pois não tenho o Zeos. O commandtext no ADO e String já o Seu componente e um TString. Repare voce da ADD.
Sendo Assim sempre que entrar no código tem que dar um Clear se nao ele vai concatenar um select no outro por isso o erro no segundo. Observe:
DM.TbSaida.First;
while not DM.TbSaida.Eof do
begin
Qry.Close;
Qry.Sql.Clear;
Qry.SQL.Add(Select Quantidade from Produtos);
Qry.SQL.Add(WHERE Referencia = :Referencia);
Qry.ParamByName(Referencia).AsString := DM.TbSaida.FieldByName(Produto).asstring;
Qry.Open;
Qry.Edit;
Qry.Fields[0].AsFloat := Qry.Fields[0].AsFloat - DM.TbSaida.FieldByName(Quantidade).Asfloat;
Qry.Post;
DM.TbSaida.Next;
end;
Isso ira resolver !!
Aguardo retorno para encerrar o chamado !!!!
GOSTEI 0
Rodrigo Mourão
01/12/2008
Olá Arnoldo, alguma novidade??
O Código resolveu ???
abs !!
O Código resolveu ???
abs !!
GOSTEI 0
Rodrigo Mourão
01/12/2008
QryBusca := TZQuery.Create(Self);
QryBusca.Connection := DM.conexao; QryBusca.Close;
QryBusca.Sql.Clear;
QryBusca.SQL.Add(Select Quantidade, Unidade, Produto, Artigo, Grupo, Marca, PrecoAtacado, PrecoVenda from Produtos);
QryBusca.SQL.Add(WHERE Referencia = :Referencia);
QryBusca.ParamByName(Referencia).AsString := MascEdit8.Text;
QryBusca.Open;
if Qry.RecordCount = 1 then
begin
MascEdit10.Text := QryBusca.FieldByName(Quantidade).AsString;
MascEdit6.Text := QryBusca.FieldByName(Unidade).AsString;
Label25.Caption := QryBusca.FieldByName(Produto).AsString;
Edit2.Text := QryBusca.FieldByName(Artigo).AsString;
Edit3.Text := QryBusca.FieldByName(Grupo).AsString;
Edit4.Text := QryBusca.FieldByName(Marca).AsString;
if ComboBox5.ItemIndex = 0 then
MascEdit11.Text := FormatFloat(0.#0,,(QryBusca.FieldByName(PrecoAtacado).AsFloat))
else
MascEdit11.Text := FormatFloat(0.#0,,(QryBusca.FieldByName(PrecoVenda).AsFloat));
end
else
begin
ShowMessage(Produto não encontrado); --> aqui, se a busca não encontrar o Produto ele avisa.
MascEdit8.SetFocus;
exit;
end;
QryBusca.Connection := DM.conexao; QryBusca.Close;
QryBusca.Sql.Clear;
QryBusca.SQL.Add(Select Quantidade, Unidade, Produto, Artigo, Grupo, Marca, PrecoAtacado, PrecoVenda from Produtos);
QryBusca.SQL.Add(WHERE Referencia = :Referencia);
QryBusca.ParamByName(Referencia).AsString := MascEdit8.Text;
QryBusca.Open;
if Qry.RecordCount = 1 then
begin
MascEdit10.Text := QryBusca.FieldByName(Quantidade).AsString;
MascEdit6.Text := QryBusca.FieldByName(Unidade).AsString;
Label25.Caption := QryBusca.FieldByName(Produto).AsString;
Edit2.Text := QryBusca.FieldByName(Artigo).AsString;
Edit3.Text := QryBusca.FieldByName(Grupo).AsString;
Edit4.Text := QryBusca.FieldByName(Marca).AsString;
if ComboBox5.ItemIndex = 0 then
MascEdit11.Text := FormatFloat(0.#0,,(QryBusca.FieldByName(PrecoAtacado).AsFloat))
else
MascEdit11.Text := FormatFloat(0.#0,,(QryBusca.FieldByName(PrecoVenda).AsFloat));
end
else
begin
ShowMessage(Produto não encontrado); --> aqui, se a busca não encontrar o Produto ele avisa.
MascEdit8.SetFocus;
exit;
end;
GOSTEI 0
Arnoldo Lima
01/12/2008
Vou testar, depoi lhe falo
arnoldo
GOSTEI 0
Rodrigo Mourão
01/12/2008
Olá, Arnoldo !!
O Código esta Ok ??? Podemos encerrar o Chamado ???
Estamos no aguardo !!! abs.
GOSTEI 0
Arnoldo Lima
01/12/2008
Deu certo. Obrigado pelas informações.
Está ok.
Estou esperando os vídeos sobre "Trabalhar com camadas".
Arnoldo
GOSTEI 0
Arnoldo Lima
01/12/2008
Pode fechar o chamado.
Só queria que me falasse sobre o que é isso:
QryBusca.RecordCount = 1
O que é o RecordCount ?
O que ele faz mesmo?
Grato
Arnoldo
GOSTEI 0
Arnoldo Lima
01/12/2008
Quanto a "Qry" que você cria. Ela não existe fisicamente?
Ela, a Qry, vai existir só em tempo de execução?
Ela vai existir virtualmente?
É isso?
Aguardo.
Arnoldo
Podemos fehcar.
GOSTEI 0
Rodrigo Mourão
01/12/2008
Exato !!
abs
GOSTEI 0