FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Parametros sql genericos
buen dia
estoy migrando tablas dbf a firebird y no utilizo ninguna utilidad porque quiero filtrar algunos campos y registros originales en el proceso, es por eso que estoy montando una aplicacion que lo haga utilizo ado para acceder a las dbf y uib para acceder a firebird con delphi 2005 la duda es esta cuando empece a trabajar con una sola tabla todo funcionaba bien, formaba una sentencia sql 'insert into articulos (a,b,etc...) values (:a,:b,:etc...)' e iba recorriendo la tabla dbf y asignando los valores de los parametros de la siguiente manera Código:
with fbQuery.Params do begin ByNameAsString['art_id']:=adoquery1.FieldByName('art_id').AsString; ByNameAsString['fab_id']:=adoquery1.FieldByName('fab_id').AsString; ByNameAsSmallint['alm_id']:=ADOQuery1.FieldByName('alm_id').AsInteger; ByNameAsString['fab_descr']:=ADOQuery1.FieldByName('fab_descr').AsString; ByNameAsString['art_descr']:=ADOQuery1.FieldByName('art_descr').AsString; ByNameAsCurrency['art_prec']:=ADOQuery1.FieldByName('art_prec').AsCurrency; ByNameAsCurrency['art_pp']:=ADOQuery1.FieldByName('art_pp').AsCurrency; ByNameAsCurrency['art_exist']:=ADOQuery1.FieldByName('art_exist').AsCurrency; ByNameAsCurrency['art_ucosto']:=ADOQuery1.FieldByName('art_ucosto').AsCurrency; ByNameAsString['art_nod']:=ADOQuery1.FieldByName('art_nod').AsString; ByNameAsCurrency['art_costoe']:=ADOQuery1.FieldByName('art_costoe').AsCurrency; ByNameAsCurrency['art_costop']:=ADOQuery1.FieldByName('art_costop').AsCurrency; ByNameAsCurrency['art_cospes']:=ADOQuery1.FieldByName('art_cospes').AsCurrency; ByNameAsString['art_apdesc']:=ADOQuery1.FieldByName('art_apdesc').AsString; ByNameAsString['art_obser1']:=adoquery1.FieldByName('art_obser1').AsString; ByNameAsString['art_inter1']:=adoquery1.FieldByName('art_inter1').AsString; ByNameAsString['art_inter2']:=adoquery1.FieldByName('art_inter2').AsString; end; fbTrans.StartTransaction; Código:
with lista do begin Clear; Add('ARTICUL'); //tabla dbf Add('ARTICULOS'); //tabla firebird Add('ART_ID'); //campos a copiar Add('FAB_ID'); Add('ALM_ID'); Add('FAB_DESCR'); Add('ART_DESCR'); Add('ART_PREC'); Add('ART_PP'); Add('ART_EXIST'); Add('ART_UCOSTO'); Add('ART_NOD'); Add('ART_COSTOE'); Add('ART_COSTOP'); Add('ART_COSPES'); Add('ART_APDESC'); Add('ART_OBSER1'); Add('ART_INTER1'); Add('ART_INTER2'); end; strSQL:='insert into '+lista[1]+' ('; for i:=2 to lista.Count-1 do strSQL:=strSQL+lista[i]+', '; strSQL:=LeftStr(strSQL,Length(strSQL)-2)+') values (:'; for i:=2 to lista.Count-1 do strSQL:=strSQL+lista[i]+', :'; strSQL:=LeftStr(strSQL,Length(strSQL)-3)+')'; Código:
for i:=2 to lista.Count-1 do fvUIBQuery1.Params.ByNameAsVariant[lista[i]]:=adoquery1.FieldByName(lista[i]).AsVariant; [Error] Migracion.pas(134): E2129 Cannot assign to a read-only property Alguna idea de como puedo resolver esto? Mil gracias |
|
|
|