DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 22/3/2010 4:55:54 PM

to inserindo alguns itens no banco e sempre vai duplicado pra la.. o que pode ser?

o codigo é o abaixo e o banco é postgreSQL

#Código

unit addcli;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, Grids, DBGrids, ZAbstractRODataset,
  ZAbstractDataset, ZDataset, ZConnection, ExtCtrls, DBCtrls;

type
  TTCadCli = class(TForm)
    ZConnection1: TZConnection;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Label1: TLabel;
    ecnpj: TEdit;
    Label2: TLabel;
    erazsocial: TEdit;
    BProcessar: TButton;
    ZQuery2: TZQuery;
    DBNavigator1: TDBNavigator;
    ZQuery1: TZQuery;
    procedure BProcessarClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  TCadCli: TTCadCli;

implementation

{$R *.dfm}

procedure TTCadCli.BProcessarClick(Sender: TObject);
begin
  ZQuery2.Active := False; //Desativando a Query
  ZQuery2.SQL.Clear; //Limpando a Query
  ZQuery2.SQL.Add('INSERT INTO CLIENTES (CNPJ,RAZSOCIAL)'); //Inserindo Instrução SQL
  ZQuery2.SQL.Add('VALUES (:CNPJ, :RAZSOCIAL)');  //Incluindo parametros
  // o ID é auto incremento no banco
  // ZQuery2.ParamByName('ID').AsInteger := (StrToInt (NomedoeditReferenteaoID.Text)); // Passando valores para o parametro.
  ZQuery2.ParamByName('CNPJ').AsString := ecnpj.Text; // Passando valores para o parametro.
  ZQuery2.ParamByName('RAZSOCIAL').AsString := erazsocial.Text; // Passando valores para o parametro.
  ZQuery2.Active := True;  //Ativando a Query
  ZQuery2.Refresh;  //Atualizando a query
  Close;
end;

procedure TTCadCli.FormCreate(Sender: TObject);
begin
  ecnpj.Text:='';
  erazsocial.Text:='';
end;

end.
 
Emerson
 
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 938
 Postado em: 22/3/2010 5:21:56 PM
substitua:

  ZQuery2.Active := True;  //Ativando a Query
  ZQuery2.Refresh;  //Atualizando a query




por algo como:

  ZQuery2.
Execute;

ou:


  ZQuery2.ExecSQL;

um comando DML (INSERT, UPDATE, DELETE) não deve ser "aberto", pois não retorna dados. deve ser apenas executado.

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 24/3/2010 7:34:55 AM
  show de bola parceiro.. era isso mesmo.

 
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03