Jump to content

Archived

This topic is now archived and is closed to further replies.

Carcleo

função autocompletar

Recommended Posts

Ola amigo. É exatamente isso que quero que me ensine: Como corrigir esses erros, pois ja tentei corrigilos mas nao consegui.Caso nao tenha persebidfo, ja coloquei o log com os erro na pergunta.

Share this post


Link to post
Share on other sites

Mas basta dar dois cliques sobre o erro, ele vai parar na linha com o problema, depois interprete a mensagem de erro e corrija, como:

[Error] CadPedidos.pas(160): ',' or ':' expected but ':=' found

Quer dizer que era esperado , ou :, mas voc~e colocou um :=, provavelmente fez isto em declaração de variável, ou seja, em uma VAR.

 

Se olhar na linha 160, você declarou o seguinte:

 

var  TmpTable:TTable;	TmpTable := TTable.Create(Application);  Total:Currency; // armazena valores do tipo moeda
A linha TmpTable := TTable.Create(Application); você deve de remover, pois esta errado.

Share this post


Link to post
Share on other sites

Putz, Carcleo, não é por nada não, mas compre um livro de delphi, puxe uma apostila com várias páginas, sei lá...

 

 

1º erro:

 

procedure TCPedidos.RecalculaPedido;var  TmpTable:TTable;	TmpTable := TTable.Create(Application);  Total:Currency; // armazena valores do tipo moedabegin	// cria um objeto Table via codificação	TmpTable := TTable.Create(Application);	try
Não pode usar o := entre a palavra var e a palavra begin, Não existe atribuição na seção de declaração de variáveis

 

 

 

2º erro:

 

procedure TCPedidos.RecalculaPedido;var  TmpTable:TTable;	TmpTable := TTable.Create(Application);  Total:Currency; // armazena valores do tipo moedabegin	// cria um objeto Table via codificação	TmpTable := TTable.Create(Application);	try
O segundo erro é porque tem esse parenteses na seção de declaração de varíaveis sendo que o compilador esperava um ':' ou uma ','

 

3º erro:

begin	// cria um objeto Table via codificação	TmpTable := TTable.Create(Application);	try
Como você declarou de forma errada o objeto tmpTable na linha 160, ele não conhece o tipo pra fazer o create direito...

 

4º erro:

begin	// cria um objeto Table via codificação	TmpTable := TTable.Create(Application);	try
Derivado do caso acima, porém, não sei onde ele achou um enumerated

 

 

5º erro:

TmpTable.DatabaseName := TableItens.DatabaseName;
Aconteceu pelo mesmo motivo que o problema acima aconteceu

 

6º, 7º, 8º, 9º, 10º, 11º, 13º erro:

O objeto não corretamente declarado, então não conhece as propriedades. Na verdade, o objeto não existe

 

12º, 14º erro:

Esse eu fiquei confuso....

 

15º, 16º, 17º erro:

Provavelmente provocado em virtude do erro 12 e 14...

 

18º erro:

Pro compilador, tá faltando begin no seu código...

 

19º erro:

if not TableClientes.FindKey([TablePedidosNomeCli.AsInteger]) then
Parece que o Ztable não tem esse método, talvez ele fique dentro de alguma propriedade...

 

 

20º erro:

 

Esse fatal error não é o um erro em sí, é uma mensagem que informa que teve tantos problemas que não foi possível compilar...

Share this post


Link to post
Share on other sites

Ola.

 

Obrigado pelas dicas.

Diminuiram muito os erros mas ainda tem alguns:

Esses ja queimei muito neuronio mas nada.

Por favor, me continue ajudado que eu vou chegar lá:

[Error] CadPedidos.pas(259): Incompatible types: 'String' and 'TField'[Error] CadPedidos.pas(340): Operator not applicable to this operand type[Fatal Error] SaneRio.dpr(15): Could not compile used unit 'CadPedidos.pas'

Eis o codigo todo, onde sera que esta o erro:

unit CadPedidos;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, Buttons, DBCtrls, Grids, DBGrids, ExtCtrls, DB,  ZAbstractRODataset, ZAbstractDataset, ZAbstractTable, ZDataset, Mask;type  TCPedidos = class(TForm)	PanelDados: TPanel;	PanelBotoes: TPanel;	DBGridItens: TDBGrid;	DBNavigatorPedidos: TDBNavigator;	SpdBtnAlterar: TSpeedButton;	SpdBtnIncluir: TSpeedButton;	SpdBtnProcurar: TSpeedButton;	SpdBtnCancelar: TSpeedButton;	SpdBtnGravar: TSpeedButton;	SpdBtnExcluir: TSpeedButton;	BitBtnFechar: TBitBtn;	TablePedidos: TZTable;	TableItens: TZTable;	TableClientes: TZTable;	TableProdutos: TZTable;	DSPedidos: TDataSource;	DSItens: TDataSource;	TablePedidosCodigoPedido: TIntegerField;	TablePedidosCondicaoPgto: TStringField;	TablePedidosCodigoCliente: TIntegerField;	TablePedidosNomeCli: TStringField;	TablePedidosLocalFatura: TStringField;	TablePedidosLocalCobranca: TStringField;	TablePedidosLocalEntrega: TStringField;	TablePedidosCPF_CNPJ: TStringField;	TablePedidosCEP: TStringField;	TablePedidosDataCadastro: TDateField;	TableClientesCodigoCliente: TIntegerField;	TableClientesNome: TStringField;	TableClientesTipo: TStringField;	TableClientesEndereco: TStringField;	TableClientesEmail: TStringField;	TableClientesBairro: TStringField;	TableClientesCidade: TStringField;	TableClientesEstado: TStringField;	TableClientesTelefone: TStringField;	TableClientesCPF_CNPJ: TStringField;	TableClientesDataCadastro: TDateField;	TablePedidosNomeCliente: TStringField;	TableProdutosCodigoProduto: TIntegerField;	TableProdutosDescricao: TStringField;	TableProdutosPrecoUni: TIntegerField;	TableItensItem: TIntegerField;	TableItensCodigoProduto: TIntegerField;	TableItensQuantidade: TIntegerField;	TableItensPrecoUni: TIntegerField;	TableItensDescricao: TStringField;	TableItensTotal: TCurrencyField;	TableItensNumeroPedido: TIntegerField;	LabelCodigoPedido: TLabel;	DBEditCodigoPedido: TDBEdit;	LabelCondicaoPagamento: TLabel;	DBEditCondicaoPagamento: TDBEdit;	LabelCodigoCliente: TLabel;	DBEditCodigoCliente: TDBEdit;	LabelNomeCliente: TLabel;	DBLookupComboBoxNomeCliente: TDBLookupComboBox;	LabelLocalFatura: TLabel;	DBEditLocalFatura: TDBEdit;	LabelLocalCobranca: TLabel;	DBEditLocalCobranca: TDBEdit;	LabelLocalEntrega: TLabel;	DBEditLocalEntrega: TDBEdit;	LabelCPF_CNPJ: TLabel;	DBEditCPF_CNPJ: TDBEdit;	LabelCEP: TLabel;	DBEditCEP: TDBEdit;	LabelDataCadastro: TLabel;	DBEditDataCadastro: TDBEdit;	LabelTotalPedido: TLabel;	StaticTextTotal: TStaticText;	procedure FormClose(Sender: TObject; var Action: TCloseAction);	procedure FormCreate(Sender: TObject);	procedure FormDestroy(Sender: TObject);	procedure TablePedidosNewRecord(DataSet: TDataSet);	procedure TableItensCalcFields(DataSet: TDataSet);	procedure TableItensNewRecord(DataSet: TDataSet);	procedure TableItensBeforeInsert(DataSet: TDataSet);	procedure TableItensBeforePost(DataSet: TDataSet);	procedure DBGridItensKeyDown(Sender: TObject; var Key: Word;	  Shift: TShiftState);	procedure TableItensCodigoProdutoValidate(Sender: TField);	procedure TablePedidosDataCadastroSetText(Sender: TField;	  const Text: String);	procedure SpdBtnIncluirClick(Sender: TObject);	procedure SpdBtnAlterarClick(Sender: TObject);	procedure SpdBtnExcluirClick(Sender: TObject);	procedure SpdBtnGravarClick(Sender: TObject);	procedure SpdBtnCancelarClick(Sender: TObject);  private	procedure AtivarControles(Ativar: Boolean);	procedure RecalculaPedido;	{ Private declarations }  public	{ Public declarations }  end;var  CPedidos: TCPedidos;implementationuses dmsane;{$R *.dfm}procedure TCPedidos.FormClose(Sender: TObject; var Action: TCloseAction);beginAction := caFree; // remove o form da memóriaCPedidos := NIL; // informa que foi destruído (não criadoend;procedure TCPedidos.FormCreate(Sender: TObject);beginTableProdutos.Open;TableClientes.Open;TablePedidos.Open;TableItens.Open;end;procedure TCPedidos.FormDestroy(Sender: TObject);beginTableProdutos.Close;TableClientes.Close;TablePedidos.Close;TableItens.Close;end;procedure TCPedidos.TablePedidosNewRecord(DataSet: TDataSet);beginTablePedidosDataCadastro.AsDateTime := Date; //inicia com a data atualend;procedure TCPedidos.AtivarControles(Ativar: Boolean);begin	PanelDados.Enabled := Ativar;	DBNavigatorPedidos.Enabled := (not Ativar);	DBGridItens.ReadOnly := (not Ativar);	SpdBtnIncluir.Enabled := (not Ativar);	SpdBtnAlterar.Enabled := (not Ativar);	SpdBtnExcluir.Enabled := (not Ativar);	SpdBtnGravar.Enabled := Ativar;	SpdBtnCancelar.Enabled := Ativar;	SpdBtnProcurar.Enabled := (not Ativar);end;procedure TCPedidos.RecalculaPedido;var	TmpTable:TZTable;	Total:Currency; // armazena valores do tipo moedabegin	// cria um objeto Table via codificação	TmpTable := TZTable.Create(Application);	try		// define DatabaseName e TableName via codificação		TmpTable.Connection := TableItens.Connection;		TmpTable.TableName := TableItens.TableName;		TmpTable.Open;		TmpTable.FindField(TablePedidosCodigoPedido.AsString);		Total := 0; // inicializa a variavel totalizadora		while (not TmpTable.Eof) and		   (TmpTable.FieldByName('NumeroPedido').AsInteger = TablePedidosCodigoPedido.AsInteger) do		 begin			 // Acumula o Total da linha			 Total := Total + (TmpTable.FieldByName('PrecoUni').AsCurrency * TmpTable.FieldByName('Quantidade').AsFloat);			 TmpTable.Next; // próximo registro		 end;	 finally		 TmpTable.Close; // fecha a tabela		 TmpTable.Free; // libera objeto da memória	 end;	 StaticTextTotal.Caption := FormatCurr('###,###,##0.00', Total); end;procedure TCPedidos.TableItensCalcFields(DataSet: TDataSet);beginif (TableItensQuantidade.AsFloat > 0) and		(TableItensPrecoUni.AsCurrency > 0) then		TableItensTotal.AsCurrency := TableItensPrecoUni.AsCurrency * TableItensQuantidade.AsFloat;		RecalculaPedido; // recalcula e exibe novamenteend;procedure TCPedidos.TableItensNewRecord(DataSet: TDataSet);beginTableItensQuantidade.AsFloat := 1;DBGridItens.SelectedIndex := 0; //códigoend;procedure TCPedidos.TableItensBeforeInsert(DataSet: TDataSet);beginif TablePedidosCodigoPedido.AsString = '' then	begin		if TablePedidos.State = dsInsert then		begin			// grava para salvar o número do pedido na tabela pai			TablePedidos.Post;			// ativa a alteração novamente			TablePedidos.Edit;		end;	end;end;procedure TCPedidos.TableItensBeforePost(DataSet: TDataSet);begin if TableItensNumeroPedido.AsString = '' then		TableItensNumeroPedido.AsInteger := TablePedidosCodigoPedido.AsInteger;	if TableItensCodigoProduto.AsString = '' then	begin		DBGridItens.SelectedIndex := 0; // seleciona a coluna código		ShowMessage('Código do produto deve ser informado!');		Abort; // interrompe a gravação	end;	if TableItensQuantidade.AsFloat <= 0 then	begin		DBGridItens.SelectedIndex := 2; // seleciona coluna quantidade		ShowMessage('Código do produto deve ser informado!');		Abort; // interrompe a gravação	end;end;procedure TCPedidos.DBGridItensKeyDown(Sender: TObject; var Key: Word;  Shift: TShiftState);begin// muda para a próxima coluna se pressionar Enterif Key = VK_RETURN then // pressionou ENTERbegin	case DBGridItens.SelectedIndex of		0: DBGridItens.SelectedIndex := 2; //quantidade		1: DBGridItens.SelectedIndex := 2; //quantidade		2: DBGridItens.SelectedIndex := 3; //Preco	else		DBGridItens.SelectedIndex := 0; //código		TableItens.Next;		if TableItens.Eof then			TableItens.Append;	end;end;end;procedure TCPedidos.TableItensCodigoProdutoValidate(Sender: TField);beginif TableItensCodigoProduto.AsString <> '' thenbegin	if TableProdutos.FindField(TableItensCodigoProduto.AsString) <> '' then	TableItensPrecoUni.AsCurrency := TableProdutos.FieldByName('PrecoUni').AsCurrency	else	begin		ShowMessage('Código inválido');		Abort;	end;end;end;procedure TCPedidos.TablePedidosDataCadastroSetText(Sender: TField;  const Text: String);beginif Text = '  /  /	' then		Sender.Clear // apaga o campo data	else		// atribui a data digitada ao campo		try			Sender.AsString := Text;		except			ShowMessage('Data inválida!');		end;end;procedure TCPedidos.SpdBtnIncluirClick(Sender: TObject);begin	AtivarControles(True); // ativa os controles para digitação	TablePedidos.Append; // inclui um novo registro na tabela	DBEditDataCadastro.SetFocus;end;procedure TCPedidos.SpdBtnAlterarClick(Sender: TObject);begin  if TablePedidos.IsEmpty then	begin		// a tabela está vazia, então devemos incluir		SpdBtnIncluir.Click; // executa o click no botão		Exit; // retorna	end;	AtivarControles(True); // ativa os controles para digitação	TablePedidos.Edit; // permite alterar os dados	DBEditDataCadastro.SetFocus;end;procedure TCPedidos.SpdBtnExcluirClick(Sender: TObject);beginif Application.MessageBox('Deseja excluir este pedido?','Confirme',		MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2) = IDNO then		Exit; // retorna (sem fazer nada)	// devemos excluir os itens primeiro, para não termos	// registros órfãos	try		TableItens.First; // posiciona no primeiro item		while not TableItens.Eof do // executa até o fim do arquivo		begin			TableItens.Delete; // exclui o item			TableItens.First;		end;		TablePedidos.Delete; // exclui o pedido	except		ShowMessage('Ocorreu um erro durante a exclusão do pedido');	end;end;procedure TCPedidos.SpdBtnGravarClick(Sender: TObject);beginif TablePedidosCodigoPedido.AsInteger <= 0 then	begin		ShowMessage('Digite o número do pedido!');		DBEditCodigoPedido.SetFocus;		Exit;	end;	if TablePedidosDataCadastro.IsNull then	begin		ShowMessage('Digite a data do pedido!');		DBEditDataCadastro.SetFocus;		Exit;	end;	if TablePedidosNomeCliente.AsInteger > 0 then	begin		// procura pelo cliente usando o código		if not TableClientes.FindField(TablePedidosNomeCliente.AsString) = '' then		begin			ShowMessage('Código de cliente inválido!');			DBEditCodigoCliente.SetFocus;			Exit;		end;	end	else	begin		ShowMessage('Digite o código do cliente!');		DBEditCodigoCliente.SetFocus;		Exit;	end;	TablePedidos.Post;	if TableItens.State in [dsInsert,dsEdit] then		TableItens.Post;	AtivarControles(False); // desativa os controlesend;procedure TCPedidos.SpdBtnCancelarClick(Sender: TObject);begin TablePedidos.Cancel; // cancela inclusão/alteração	AtivarControles(False); // desativa os controlesend;end.

Share this post


Link to post
Share on other sites

cê tá zuando?

 

Putz... Cê tá abusando mas vamos lá...

 

 

Linha 259:

 

if TableProdutos.FindField(TableItensCodigoProduto.AsString) <> '' then
Você não pode fazer esse tipo de comparação (você pediu pra comparar um tfeild com uma string. Procure a propriedade value)

 

O erro da linha 340 tem o mesmo erro da linha de cima...

Share this post


Link to post
Share on other sites

Ola bdexterholland. Tudo bem?

 

Primeiramente, quero agradecer pela força que você esta me dando e informar que não to zoando não.

Cada informação que vcs me passam, esta sendo por min muito analizada mas minha pequena(ou quem sabe 'NULA') experiencia, muitas das veses não me ajuda muito.

Mas vamos lá.

 

Estou usando Zeos pra conectar o Banco Mysql.

Eu tentei usar:

if TableProdutos.FindField(TableItensCodigoProduto.OldValue) <> '' then
Pois não tem .value na ZTable mas continua dando erro.

Preciso da tua ajuda.

Aproveitando o ensejo, gostaria de fazer outra pergunta:

Minha tabela ZeusTableClientes, ão entra de jeito nenhum em estado de edição e inserção.

Pus o código abaixo em um button e a resposta sempre é não.

if (ZTableclientes.State in [dsInsert,dsEdit]) then //Verifica se a tabela esta em estado de edição ou inserção   begin	 showmessage('OK');   endelse  begin	 showmessage ('Não deu');  endend;

Como fazer para passar o estado dela para edição e inserção?

Share this post


Link to post
Share on other sites

if TableProdutos.FindField(TableItensCodigoProduto.OldValue) <> '' then
Quanto a esse, tenta comparar com nil

Não sei se vai dar certo, não tenho esperiência em banco de dados...

 

Para passar para o modo de edição:

ZTableclientes.edit

Para inserir

ZTableclientes.post

 

Continua de pé a dica:

Acessa o http://www.apostilando.com e procura uma apostila de banco de dados no delphi

Share this post


Link to post
Share on other sites

Mas num da certo de jeito nenhum.Alguem sabe onde ficam:1) A propriedade .FindKey da ZeosTable2) A propriedade .CancelRange da ZeosTable3) A propriedade .SetRange da ZeosTable4) A propriedade .GotoCurrent da ZeosTableValeu!

Share this post


Link to post
Share on other sites

Primeiramente...

 

sem sentido esse seu UP, tenha paciência e será ajudado...

 

 

Outro fato, Carcleo, tente fazer o que lhe é passado, e procure se informar mais a respeito da ferramenta que utiliza, ela tem Help, Exemplos e tudo mais, você já verificou os mesmos???

 

 

http://forum.imasters.com.br/public/style_emoticons/default/searchbeforeposting.gif

 

 

Bom, é isso... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.