Fórum Duvidas em consulta com Query #223630

31/03/2004

0

Olá,

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

André Maretti

Responder

Posts

31/03/2004

Kotho

acho que está complicando um pouquinho...

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...


Responder

Gostei + 0

31/03/2004

André Maretti

Kotho vale, mas não dá, pq quando eu dou em edit na tabela o seguinte erro acontece:

´Cannot Focus a desabled or invisible window´

Vc sabe pq ?


Responder

Gostei + 0

31/03/2004

Kotho

você (atravez do comando setfocus) ou o programa está tentando executar um setfocus em um controle que esta desabilitado (disable=true) ou invisivel (visible=false)...

se não ajudar, posta o código e o ponto do programa que está dando o erro para podermos ajuda-lo....

valew...


Responder

Gostei + 0

31/03/2004

André Maretti

Aqui está toda a Unit:

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.



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar