Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Clase Que Guarde Datos En Base De Datos (https://www.clubdelphi.com/foros/showthread.php?t=55927)

sdiaz1983 01-05-2008 19:17:48

Clase Que Guarde Datos En Base De Datos
 
Compañeros del foro, muy buen dia, antes que nada quiero mostrarles un codigo de una clase que llevo que lo que busca es guardar datos de una base de datos:

Código Delphi [-]
unit capturar;
interface
uses Classes, DBTables, QControls, SysUtils,Windows, Messages, Variants,Graphics, Controls, Forms, Dialogs, StdCtrls;
  type
  Tcapturar=class(TWidgetControl)
  private
    QryCapturar: TQuery;
    Parametro : String;
    Contarcampos: Integer;
  Public
    property Parametr: String read Parametro write Parametro;
    procedure contar(RutaArch,Tabla: shortstring);
    procedure consultar(RutaArch,Tabla,Campo,Param: shortstring);
    procedure grabar(RutaArch,Tabla: shortstring;  edits: array of string);
  end;
implementation
procedure TCapturar.contar(Rutaarch,Tabla: shortstring);
    begin
    if QryCapturar= nil then QryCapturar:=TQuery.Create(owner);
    QryCapturar.DatabaseName:=RutaArch;
    QryCapturar.SQL.Text:='select * from '+Tabla+'';
    QryCapturar.RequestLive:=True;
    QryCapturar.Active:=True;
    if(QryCapturar.RecordCount>0) then
       begin
       Showmessage(IntToStr(Qrycapturar.FieldCount));
       Contarcampos:=QryCapturar.FieldCount;
       end
       else
       begin
       Showmessage(IntToStr(QryCapturar.FieldCount));
       Contarcampos:=QryCapturar.FieldCount;
       end;
    end;
Procedure TCapturar.consultar(RutaArch,Tabla,Campo,Param: shortstring);
 begin
   Parametro:=Param;
   if QryCapturar= nil then QryCapturar:=TQuery.Create(owner);
   QryCapturar.Active:=False;
   QryCapturar.DatabaseName:=RutaArch;
   QryCapturar.SQL.Text:='select * from '+Tabla+' where '+campo+'=:P1';
   QryCapturar.Params[0].AsString:=Parametro;
   QryCapturar.RequestLive:=True;
   QryCapturar.Active:=True;
   if(QryCapturar.RecordCount>0) then
    begin
     MessageDlg('REGISTROS YA EXISTE EN EL SISTEMA',mtError,[mbOk],0);
    end;
  end;
   procedure TCapturar.grabar(RutaArch,Tabla: shortstring;  edits: array of string);
    begin
       if QryCapturar= nil then QryCapturar:=TQuery.Create(owner);
       QryCapturar.Active:=True;
       QryCapturar.DatabaseName:=RutaArch;
       QryCapturar.AppendRecord([Edits[0],Edits[1],Edits[2]]);
       MessageDlg('REGISTRO GUARDADO CORRECTAMENTE',mtInformation,[mbOk],0);
       QryCapturar.Active:=False;
    end;
end.

Hasta ahi la clase me guarda datos pero si yo tengo solo tres edits, y los campos que tengo en la base de datos son tres, la pregunta que les queria hacer es como hago para que con el metodo que ya esta que cuenta los campos lo puedo usar en conjunto con el metodo de guardar para que me guarde los campos de acuerdo a lo que obtiene ese metodo.

Me explico un poco, o sea que ese metodo de guardar sea general, o sea que yo no conozca previamente el numero de campos sino que el sistema haga ese calculo y en base a eso guarde los datos necesarios.

mil gracias por su ayuda


Sergio Diaz Ribero

Northern 02-05-2008 11:10:09

Puedes poner alggo como:

Código Delphi [-]
procedure TForm1.PonerFields(const Values: array of const);
var
  I: Integer;
begin
  for I := 1 to High(Values) do ADOTable1.Fields[i].AssignValue(Values[i]);
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  ADOTable1.Append;
  PonerFields(['uno', 'dos', 'tres', 'cuatro']);
  ADOTable1.Post;
end;


for I := 1 to High(Values) lo empiezo en 1 y no en 0 por si está puesto como autoincremental.


Saludos

sdiaz1983 03-05-2008 01:50:33

Buen Dia
 
Hombr Emuchisimas Gracia Spor Su Ayuda, Voy Aprobarlo Le Aviso Cualquier Cosa.

Mil Gracias


La franja horaria es GMT +2. Ahora son las 15:14:56.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi