Fórum Duvidas em consulta com Query #223630
31/03/2004
0
Estou tentando fazer a consulta mas não tá dando certo, alguém poderia me ajudar?
Uso Banco Access e conecção ADO.
Esta é uma entrada de produtos em estoque,
[b:fc9d3f88c0]Primeiro eu acho o produto q o usuário está dando entrada:[/b:fc9d3f88c0]TabProdutos.SQL.Clear;
TabProdutos.SQL.Add(´SELECT * FROM Tab_Produtos WHERE Codigo = ´ + TabEntrada.FieldByName(´Produto´).AsString);
TabProdutos.Open;
TabProdutos.ExecSQL;
[b:fc9d3f88c0]Depois em uma variavel eu guardo a quantidade já em estoque somado a qtd dada na entrada.[/b:fc9d3f88c0]
Qtd := TabProdutos.FieldByName(´Qtd´).AsInteger + StrToInt(DBEditQtd.Text);
Aí faço a alteração na tabela:
TabProdutos.SQL.Clear;
TabProdutos.SQL.Add(´SELECT * FROM Tab_Produtos WHERE Codigo = ´ + TabEntrada.FieldByName(´Produto´).AsString);
TabProdutos.SQL.Add(´UPDATE Tab_Produtos SET Qtd = ´ + IntToStr(Qtd));
TabProdutos.SQL.Add(´SELECT * FROM Tab_Produtos´);
TabProdutos.Open;
TabProdutos.ExecSQL;
Quando faço isso dá o seguinte erro:
SINTAXE ERROR (MISSING OPERATOR) IN QUERY EXPRESSION ´Codigio = 4 UPDATE Tab_Produtos SET Qtd = 2´
Desde já agradeço![/code]
André Maretti
Curtir tópico
+ 0Posts
31/03/2004
Kotho
faça o primeiro select, só que use somente o comando open (não precisa do execsql).
depois disso execute um edit na query...
TabProdutos.Edit;
faça uma atribuição simples:
TabProdutos.FieldByName(´Qtd).AsInteger := TabProdutos.FieldByName(´Qtd´).AsInteger + StrToInt(DBEditQtd.Text);
execute um post na query...
TabProdutos.Post;
isto resolve...
Gostei + 0
31/03/2004
André Maretti
´Cannot Focus a desabled or invisible window´
Vc sabe pq ?
Gostei + 0
31/03/2004
Kotho
se não ajudar, posta o código e o ponto do programa que está dando o erro para podermos ajuda-lo....
valew...
Gostei + 0
31/03/2004
André Maretti
unit UnitDados;
interface
uses
SysUtils, Classes, DB, ADODB, Dialogs, Windows, Messages, Variants, Graphics, Controls, Forms,
ExtCtrls, DBCtrls, Mask, StdCtrls;
type
TDMDados = class(TDataModule)
ADOPaPri: TADOConnection;
DSClientes: TDataSource;
DSProdutos: TDataSource;
DSCaixaDiario: TDataSource;
TabClientes: TADOQuery;
TabClientesCodigo: TAutoIncField;
TabClientesNome: TWideStringField;
TabClientesEndereco: TWideStringField;
TabClientesBairro: TWideStringField;
TabClientesCEP: TWideStringField;
TabClientesCidade: TWideStringField;
TabClientesEstado: TWideStringField;
TabClientesTelefone: TWideStringField;
TabClientesFax: TWideStringField;
TabClientesCelular: TWideStringField;
TabClientesE_mail: TWideStringField;
TabClientesRG: TWideStringField;
TabClientesCPF: TWideStringField;
TabClientesData_Cadastro: TDateTimeField;
TabProdutos: TADOQuery;
TabProdutosValor_Venda: TCurrencyField;
TabProdutosLucro: TStringField;
TabProdutosCodigo: TAutoIncField;
TabProdutosCod_Produto: TWideStringField;
TabProdutosDescricao: TWideStringField;
TabProdutosPreco_Custo: TBCDField;
TabProdutosTipo_Lucro: TWideStringField;
TabProdutosLucro_Valor: TBCDField;
TabProdutosLucro_Porc: TBCDField;
TabCaixaDiario: TADOQuery;
TabCaixaDiarioCodigo: TAutoIncField;
TabCaixaDiarioData: TDateTimeField;
TabCaixaDiarioHistrico: TWideStringField;
TabCaixaDiarioTipo: TWideStringField;
TabCaixaDiarioValor: TBCDField;
TabEntrada: TADOQuery;
DSEntrada: TDataSource;
TabEntradaCodigo: TAutoIncField;
TabEntradaData: TDateTimeField;
TabEntradaNotaFiscal: TWideStringField;
TabEntradaProduto: TWideStringField;
TabEntradaQtd: TIntegerField;
TabProdutosQtd: TIntegerField;
TabEntradaPreco_Custo: TBCDField;
procedure TabProdutosBeforePost(DataSet: TDataSet);
procedure TabProdutosAfterScroll(DataSet: TDataSet);
procedure TabClientesAfterInsert(DataSet: TDataSet);
procedure TabClientesBeforeInsert(DataSet: TDataSet);
procedure TabClientesBeforeCancel(DataSet: TDataSet);
procedure TabClientesBeforePost(DataSet: TDataSet);
procedure TabClientesBeforeEdit(DataSet: TDataSet);
procedure TabProdutosCalcFields(DataSet: TDataSet);
procedure TabProdutosAfterInsert(DataSet: TDataSet);
procedure TabProdutosBeforeCancel(DataSet: TDataSet);
procedure TabProdutosBeforeEdit(DataSet: TDataSet);
procedure TabProdutosBeforeInsert(DataSet: TDataSet);
procedure TabProdutosAfterCancel(DataSet: TDataSet);
procedure TabProdutosAfterEdit(DataSet: TDataSet);
procedure TabProdutosAfterPost(DataSet: TDataSet);
procedure TabEntradaBeforePost(DataSet: TDataSet);
procedure TabEntradaAfterScroll(DataSet: TDataSet);
procedure TabEntradaAfterPost(DataSet: TDataSet);
procedure TabEntradaBeforeInsert(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;
var
DMDados: TDMDados;
implementation
uses UnitProdutos, UnitPrincipal, UnitClientes, UnitEntradaProduto;
{$R *.dfm}
procedure TDMDados.TabProdutosBeforePost(DataSet: TDataSet);
begin
If (FormProdutos.RadioValor.Checked = True) Then Begin
TabProdutos.FieldByName(´Tipo_Lucro´).Value := ´V´;
End Else If (FormProdutos.RadioPorcentagem.Checked = True) Then Begin
TabProdutos.FieldByName(´Tipo_Lucro´).Value := ´P´;
End;
With FormProdutos Do Begin
DBEditCodProduto.ReadOnly := True;
DBEditDescricao.ReadOnly := True;
DBEditPrecoCusto.ReadOnly := True;
RadioValor.Enabled := False;
RadioPorcentagem.Enabled := False;
DBEditLucro.ReadOnly := True;
End;
end;
procedure TDMDados.TabProdutosAfterScroll(DataSet: TDataSet);
begin
If (TabProdutos.FieldByName(´Tipo_Lucro´).Value <> NULL) Then Begin
Tipo_Lucro := TabProdutos.FieldByName(´Tipo_Lucro´).Value;
End;
end;
procedure TDMDados.TabClientesAfterInsert(DataSet: TDataSet);
begin
formclientes.DBEditdataCad.Text := DateToStr (Now());
end;
procedure TDMDados.TabClientesBeforeInsert(DataSet: TDataSet);
begin
with formClientes do begin
DbeditNome.setfocus;
DbeditNome.ReadOnly := false;
DbeditEndereco.ReadOnly := false;
DbeditBairro.ReadOnly := false;
DbeditCEP.ReadOnly := false;
Dbeditcidade.ReadOnly := false;
DbeditEstado.ReadOnly := false;
Dbedittelefone.ReadOnly := false;
DbeditFax.ReadOnly := false;
DbeditCelular.ReadOnly := false;
DbeditEmail.ReadOnly := false;
DbeditRG.ReadOnly := false;
DbeditCPF.ReadOnly := false;
Dbeditdatacad.ReadOnly := false;
end;
end;
procedure TDMDados.TabClientesBeforeCancel(DataSet: TDataSet);
begin
with formClientes do begin
DbeditNome.ReadOnly := true;
DbeditEndereco.ReadOnly := true;
DbeditBairro.ReadOnly := true;
DbeditCEP.ReadOnly := true;
Dbeditcidade.ReadOnly := true;
DbeditEstado.ReadOnly := true;
Dbedittelefone.ReadOnly := true;
DbeditFax.ReadOnly := true;
DbeditCelular.ReadOnly := true;
DbeditEmail.ReadOnly := true;
DbeditRG.ReadOnly := true;
DbeditCPF.ReadOnly := true;
Dbeditdatacad.ReadOnly := true;
end;
end;
procedure TDMDados.TabClientesBeforePost(DataSet: TDataSet);
begin
with formClientes do begin
DbeditNome.ReadOnly := true;
DbeditEndereco.ReadOnly := true;
DbeditBairro.ReadOnly := true;
DbeditCEP.ReadOnly := true;
Dbeditcidade.ReadOnly := true;
DbeditEstado.ReadOnly := true;
Dbedittelefone.ReadOnly := true;
DbeditFax.ReadOnly := true;
DbeditCelular.ReadOnly := true;
DbeditEmail.ReadOnly := true;
DbeditRG.ReadOnly := true;
DbeditCPF.ReadOnly := true;
Dbeditdatacad.ReadOnly := true;
end;
end;
procedure TDMDados.TabClientesBeforeEdit(DataSet: TDataSet);
begin
with formClientes do begin
DbeditNome.ReadOnly := false;
DbeditEndereco.ReadOnly := false;
DbeditBairro.ReadOnly := false;
DbeditCEP.ReadOnly := false;
Dbeditcidade.ReadOnly := false;
DbeditEstado.ReadOnly := false;
Dbedittelefone.ReadOnly := false;
DbeditFax.ReadOnly := false;
DbeditCelular.ReadOnly := false;
DbeditEmail.ReadOnly := false;
DbeditRG.ReadOnly := false;
DbeditCPF.ReadOnly := false;
Dbeditdatacad.ReadOnly := false;
end;
end;
procedure TDMDados.TabProdutosCalcFields(DataSet: TDataSet);
Var
Preco_Custo, Lucro_Valor : Currency;
Lucro_Porc : Real;
begin
Try
Preco_Custo := TabProdutos.FieldByName(´Preco_Custo´).Value;
except
Preco_Custo := 0;
End;
Try
Lucro_Valor := TabProdutos.FieldByName(´Lucro_Valor´).Value;
except
Lucro_Valor := 0;
End;
Try
Lucro_Porc := TabProdutos.FieldByName(´Lucro_Porc´).Value;
except
Lucro_Porc := 0;
End;
If (TabProdutos.FieldByName(´Tipo_Lucro´).Value = ´V´) Then Begin
TabProdutos.FieldByName(´Valor_Venda´).Value := Preco_Custo + Lucro_Valor;
TabProdutos.FieldByName(´Lucro´).Value := ´R$ ´ + CurrToStr(Lucro_Valor);
End Else Begin
TabProdutos.FieldByName(´Valor_Venda´).Value := Preco_Custo + (Preco_Custo * Lucro_Porc/100);
TabProdutos.FieldByName(´Lucro´).Value := FloatToStr(Lucro_Porc) + ´ ¬´;
End;
end;
procedure TDMDados.TabProdutosAfterInsert(DataSet: TDataSet);
begin
FormProdutos.DBEditCodProduto.SetFocus;
ModoCadProduto := ´Edição´;
end;
procedure TDMDados.TabProdutosBeforeCancel(DataSet: TDataSet);
begin
With FormProdutos Do Begin
DBEditCodProduto.ReadOnly := True;
DBEditDescricao.ReadOnly := True;
DBEditPrecoCusto.ReadOnly := True;
RadioValor.Enabled := False;
RadioPorcentagem.Enabled := False;
DBEditLucro.ReadOnly := True;
End;
end;
procedure TDMDados.TabProdutosBeforeEdit(DataSet: TDataSet);
begin
With FormProdutos Do Begin
DBEditCodProduto.ReadOnly := False;
DBEditDescricao.ReadOnly := False;
DBEditPrecoCusto.ReadOnly := False;
RadioValor.Enabled := True;
RadioPorcentagem.Enabled := True;
DBEditLucro.ReadOnly := False;
DBEditCodProduto.SetFocus;
End;
end;
procedure TDMDados.TabProdutosBeforeInsert(DataSet: TDataSet);
begin
With FormProdutos Do Begin
DBEditCodProduto.ReadOnly := False;
DBEditDescricao.ReadOnly := False;
DBEditPrecoCusto.ReadOnly := False;
RadioValor.Enabled := True;
RadioPorcentagem.Enabled := True;
DBEditLucro.ReadOnly := False;
DBEditCodProduto.SetFocus;
End;
end;
procedure TDMDados.TabProdutosAfterCancel(DataSet: TDataSet);
begin
ModoCadProduto := ´Consulta´;
end;
procedure TDMDados.TabProdutosAfterEdit(DataSet: TDataSet);
begin
ModoCadProduto := ´Edição´;
end;
procedure TDMDados.TabProdutosAfterPost(DataSet: TDataSet);
begin
ModoCadProduto := ´Consulta´;
end;
//**********************PROBLEMA****************************
procedure TDMDados.TabEntradaBeforePost(DataSet: TDataSet);
Var
Qtd : Integer;
begin
TabProdutos.SQL.Clear;
TabProdutos.SQL.Add(´SELECT * FROM Tab_Produtos WHERE Descricao LIKE ´ + QuotedStr(´¬´ + FormEntradaProduto.ComboProdutos.Text + ´¬´));
TabProdutos.Open;
TabProdutos.ExecSQL;
TabEntrada.FieldByName(´Produto´).Value := TabProdutos.FieldByName(´Codigo´).AsString;
TabProdutos.SQL.Clear;
TabProdutos.SQL.Add(´SELECT * FROM Tab_Produtos´);
TabProdutos.Open;
TabProdutos.ExecSQL;
If (ModoEntradaProdutos = ´Cadastro´) Then Begin
TabProdutos.SQL.Clear;
TabProdutos.SQL.Add(´SELECT * FROM Tab_Produtos WHERE Codigo = ´ + TabEntrada.FieldByName(´Produto´).AsString);
TabProdutos.Open;
// TabProdutos.ExecSQL;
Qtd := TabProdutos.FieldByName(´Qtd´).AsInteger + StrToInt(FormEntradaProduto.DBEditQtd.Text);
TabProdutos.Edit;
TabProdutos.FieldByName(´Qtd´).Value := Qtd;
TabProdutos.Post;
{ TabProdutos.SQL.Clear;
TabProdutos.SQL.Add(´SELECT * FROM Tab_Produtos WHERE Codigo = ´ + TabEntrada.FieldByName(´Produto´).AsString + ´;´);
TabProdutos.SQL.Add(´UPDATE Tab_Produtos SET Qtd = ´ + IntToStr(Qtd) + ´;´);
TabProdutos.SQL.Add(´SELECT * FROM Tab_Produtos´);
TabProdutos.Open;
TabProdutos.ExecSQL;}
End;
end;
//**********************PROBLEMA****************************
procedure TDMDados.TabEntradaAfterScroll(DataSet: TDataSet);
begin
If (ModoEntradaProdutos <> ´Cadastro´) Then Begin
ModoEntradaProdutos := ´Scroll´;
End;
end;
procedure TDMDados.TabEntradaAfterPost(DataSet: TDataSet);
Begin
ModoEntradaProdutos := ´Consulta´;
end;
procedure TDMDados.TabEntradaBeforeInsert(DataSet: TDataSet);
begin
ModoEntradaProdutos := ´Cadastro´;
FormEntradaProduto.DBEditData.SetFocus;
end;
end.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)