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