marcio.theis 3 Denunciar post Postado Fevereiro 9, 2007 De dois cliques sobre o erro, o delphi vai parar na linha com problema, corrija. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Fevereiro 9, 2007 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. Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Fevereiro 9, 2007 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 moedaA linha TmpTable := TTable.Create(Application); você deve de remover, pois esta errado. Compartilhar este post Link para o post Compartilhar em outros sites
bdexterholland 0 Denunciar post Postado Fevereiro 9, 2007 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); tryNã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); tryO 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); tryComo 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); tryDerivado 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]) thenParece 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... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Fevereiro 9, 2007 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. Compartilhar este post Link para o post Compartilhar em outros sites
bdexterholland 0 Denunciar post Postado Fevereiro 10, 2007 cê tá zuando? Putz... Cê tá abusando mas vamos lá... Linha 259: if TableProdutos.FindField(TableItensCodigoProduto.AsString) <> '' thenVocê 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... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Fevereiro 10, 2007 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) <> '' thenPois 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? Compartilhar este post Link para o post Compartilhar em outros sites
bdexterholland 0 Denunciar post Postado Fevereiro 10, 2007 if TableProdutos.FindField(TableItensCodigoProduto.OldValue) <> '' thenQuanto 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 Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Fevereiro 11, 2007 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! Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Fevereiro 13, 2007 Oh pessoal, ajudaí. Compartilhar este post Link para o post Compartilhar em outros sites
Hugo Slepicka 0 Denunciar post Postado Fevereiro 14, 2007 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 Compartilhar este post Link para o post Compartilhar em outros sites