Passar a função incluir_Dados para dentro do botão incluir

22/02/2010

1

unit UBancoDados; interface uses ADODB,DB; type TCadPrinc=class private
cnx:TADOConnection;
cadQry:TADOQuery;
Ds:TDataSource; public constructor create;overload;
destructor destroy;overload;
Function FazerConexao:boolean;
Function Incluir_Dados(cod:integer;nom:string):boolean;
Function Excluir_Dados(cod:integer;nom:string):boolean;
Function Alterar_Dados(cod:integer;nom:string):boolean; end; implementation constructor TCadprinc.create;
begin
inherited create;
cnx:= TADOConnection.Create(nil);
ds:= TDataSource.Create(nil);
cadqry:= TADOQUERY.Create(nil);
end;
destructor TCadprinc.destroy;
begin
cnx.Destroy;
ds.Destroy;
cadqry.Destroy;
inherited destroy;
end; function TCadPrinc.FazerConexao: boolean;
begin
cnx.Connected :=true;
cnx.ConnectionString :='provider=sqloledb.1;integrated security = sspi;persist security info = false;intial catalog = agenda; data sorce = fabio';
cnx.LoginPrompt :=true;
ds.DataSet := cadqry;
cadqry.Active := true;
cadqry.Connection := Cnx;
cadqry.SQL.Add('select*from tbcad where codigo=:wcod and nome=:wnom');
end; function TCadPrinc.Incluir_Dados(Wcod:integer;Wnom:string):boolean;
begin
with cadqry do
begin
try
close;
sql.Clear;
sql.Add(' insert into tbcad(codigo,nome) values(:wcod,:wnom)');
parameters[0].Value :=cod;
parameters[1].Value:=nom;
execsql;
except
end;
end;
end; function TCadPrinc.Excluir_Dados(Wcod:integer;Wnom:string):boolean;
begin
with cadqry do
begin
try
close;
sql.Clear;
sql.Add('delete from tbcad where codigo =:wcod and nome=:wnom');
parameters[0].Value :=cod;
parameters[1].Value:=nom;
execsql;
except
end;
end;
end; function TCadPrinc.Alterar_Dados(Wcod:integer;Wnom:string):boolean;
begin
with cadqry do
begin
try
close;
sql.Clear;
sql.Add('update tbcad set codigo=:wcod and nome=:wnom');
parameters[0].Value :=cod;
parameters[1].Value:=nom;
execsql;
except
end;
end;
end; end.
Ola amigos programadores eu estou com um ploblema de passar os parametros da função Incluir_dados da unit UBancodedados para dentro do lbcodigo.caption e txtnome.text que se aloja no botão incluir do form de cadastro de agenda.
Veja o evento do botao click. procedure Tfrmcad.BtnInclClick(Sender: TObject);
begin
if objcad.Incluir_Dados(wcod;wnom) then / está havendo erro nesta linha - [error] ucad.pas(58): undeclared identifier: 'wcod'/
begin
lbcodigo.Caption := wcod;
txtnome.Text := wnom;
end;
end;    
Responder

Posts

22/02/2010

Alan Souza

primeiramente, procure definir melhor o nome dos parâmetros: Function Incluir_Dados(cod:integer;nom:string):boolean; function TCadPrinc.Incluir_Dados(Wcod:integer;Wnom:string):boolean; begin with cadqry do begin try close; sql.Clear; sql.Add(' insert into tbcad(codigo,nome) values(:wcod,:wnom)'); parameters[0].Value :=cod; parameters[1].Value:=nom; execsql; except end; end; end; repare q uma hora os parâmetros são cod e nom, e outra são Wcod e Wnom e na procedure: procedure Tfrmcad.BtnInclClick(Sender: TObject); begin if objcad.Incluir_Dados(wcod;wnom) then //não é , ao invés de ; ? e wcod e wnom são variáveis de escopo global? begin lbcodigo.Caption := wcod; txtnome.Text := wnom; end; end;
Responder
unit UBancoDados;

interface

uses ADODB,DB;

type

TCadPrinc=class
  private
    cnx:TADOConnection;
    cadQry:TADOQuery;
    Ds:TDataSource;
  public
    constructor create;overload;
    destructor destroy;overload;
    Function FazerConexao:boolean;
    Function Incluir_Dados(cod:integer; nom:string): boolean;
    Function Excluir_Dados(cod:integer; nom:string): boolean;
    Function Alterar_Dados(cod:integer; nom:string): boolean;
  end;

implementation

constructor TCadprinc.create;
begin
  inherited create;
  cnx:= TADOConnection.Create(nil);
  ds:= TDataSource.Create(nil);
  cadqry:= TADOQUERY.Create(nil);
end;

destructor TCadprinc.destroy;
begin
  cnx.Destroy;
  ds.Destroy;
  cadqry.Destroy;
  inherited destroy;
end;

function TCadPrinc.FazerConexao: boolean;
begin
  cnx.Connected :=true;
  cnx.ConnectionString :='provider=sqloledb.1;integrated security = sspi;persist security info = false;intial catalog = agenda; data sorce = fabio';
  cnx.LoginPrompt :=true;
  ds.DataSet := cadqry;
  cadqry.Active := true;
  cadqry.Connection := Cnx;
  cadqry.SQL.Add('select*from tbcad where codigo=:wcod and nome=:wnom');
end;

function TCadPrinc.Incluir_Dados(cod:integer; nom:string): boolean;
begin
  with cadqry do
  begin
    try
      close;
      sql.Clear;
      sql.Add('insert into tbcad(codigo,nome) values(:wcod,:wnom)');
      parameters[0].Value :=cod;
      parameters[1].Value:=nom;
      execsql;
    except
    end;
  end;
end;

function TCadPrinc.Excluir_Dados(cod:integer; nom:string): boolean;
begin
  with cadqry do
  begin
    try
      close;
      sql.Clear;
      sql.Add('delete from tbcad where codigo =:wcod and nome=:wnom');
      parameters[0].Value :=cod;
      parameters[1].Value:=nom;
      execsql;
    except
    end;
  end;
end;

function TCadPrinc.Alterar_Dados(cod:integer; nom:string): boolean;
begin
  with cadqry do
  begin
    try
      close;
      sql.Clear;
      sql.Add('update tbcad set codigo=:wcod and nome=:wnom');
      parameters[0].Value :=cod;
      parameters[1].Value:=nom;
      execsql;
    except
    end;
  end;
end;

end.


provavelmente o erro está na passagem dos valores. veja em qual objeto está sendo informado o valor e passe esse valor para o método.

procedure Tfrmcad.BtnInclClick(Sender: TObject);
begin
  // o primeiro parâmetro deve ser inteiro e o segundo, string,
  // pois está definido desta forma no cabeçalho do método:
  // Function Incluir_Dados(cod:integer; nom:string): boolean;

  if objcad.Incluir_Dados(strtointdef(txtcodigo.text, 0), txtnome.text) then // inclui a informação no BD
  begin
    txtcodigo.text := '';
    txtnome.Text := '';
  end;
end;

Responder
Me desculpem gente a passagem verdadeira dos parametros das functions e a seguinte   function TCadPrinc.Incluir_Dados(Wcod:integer;Wnom:string):boolean; Obrigado a todos.
Responder