Programación General > C++ Builder
Insertar Registros
(1/1)
Jenncarol:
Buenas tardes necesito un poco de ayuda.
-> Tengo una tabla llamada historial necesito insertar Registros en esa
tabla desde otra y tambien los campos que son variables calculadas.
La tabla historial esta compuesta por los siguientes campos:
INTERES
CAP_PAG
TOTAL
CAPIT_ACT
N_PAGO
N_P
-> Lo que quiero hacer con el "Insert" valga la redundancia, es insertar los
siguientes registros:
interes = valor calculado
capital_pagado = valor calculado
total_p = valor calculado
cap_act = valor calculado
cod_p= campo de la tabla prestamos
n_p = campo de la tabla detalle_pagos
cod_prest= campo de la tabla prestamos
Y este el codigo que estoy utilizando:
Qhistorico->SQL->Add("insert into Historial_detalle
values :interes, :capital_pagado, :total_p, :cap_act, :cod_prest, :cod_p)");
Qhistorico->Close();
Qhistorico->SQL->Clear();
Qhistorico->ParamByName("INTERES")->AsString=saldo;
Qhistorico->ParamByName("CAP_PAG")->AsString=cap_pagado;
Qhistorico->ParamByName("TOTAL")->AsString=monto_pagar;
Qhistorico->ParamByName("CAPIT_ACT)->AsString=capital;
Qhistorico->ParamByName("N_PAGO")->AsString=cod_p;
Qhistorico->ParamByName("CODIGO")->AsString=cod_pres;
Qhistorico->ExecSQL();
porfa necesito una orientacion, acerca de si me falta algo en el codigo, porque la
verdad he intentado de varias formas y no me da.
:rolleyes: por su ayuda Gracias...
Linspire:
La verdad es que es una severa tontería lo que estás haciendo, y como ya me estoy muriendo de sueño me limitaré a colocarte un fragmento de código para insertar un registro, te recomiendo que uses el TTable en lugar de TQuery, éste último a mi me funcionaba y después dejaba de hacerlo, en cambio el primero no me ha dado problemas.
--- Código: Text --- void __fastcall TForm1::nuevo_registro(TStringGrid * grid, TTable * tabla){ String grueso, ancho, largo, def, clase; int i,piezas,pt; double volm3; tabla->TableName="inventario"; tabla->Open(); for(i=1;i<grid->RowCount;i++) { grueso=grid->Cells[1][i]; ancho=grid->Cells[2][i]; largo=grid->Cells[3][i]; if(!grid->Cells[4][i].IsEmpty()) piezas=grid->Cells[4][i].ToInt(); else piezas=0; if(!grid->Cells[5][i].IsEmpty()) pt=grid->Cells[5][i].ToInt(); else pt=0; if(!grid->Cells[6][i].IsEmpty()) volm3=grid->Cells[6][i].ToDouble(); else volm3=0; if((grueso.IsEmpty()==true)||(ancho.IsEmpty()==true)||(piezas==0)||(volm3==0)) NULL; else { tabla->Insert(); tabla->FieldByName("Grueso")->Value=grueso; tabla->FieldByName("Ancho")->Value=ancho; tabla->FieldByName("Largo")->Value=largo; tabla->FieldByName("Piezas")->Value=piezas; tabla->FieldByName("Volpt")->Value=pt; tabla->FieldByName("Volmc")->Value=volm3; tabla->FieldByName("Definicion")->Value="Madera aserrada"; tabla->FieldByName("Especie")->Value="Pino"; tabla->FieldByName("Clase")->Value="Producto primario"; tabla->Post(); } } tabla->Close(); } Suerte!. :D
sonGoku:
Lo primero que tienes que decir es que formato esta la tabla, si es dbase debes trabajar con los componente TTable,TQuery,... y no puedes utilizar SQL, mientras si el formato es otro(Access,MySQL,...) debes trabajar con componenete como TADOTable,TADOQuery,... y si puedes utilizar SQL.
Sobre tu codigo fuente deberias hacerlo asi:
AnsiString sTexto = AnsiString("insert into Historial_detalle values ") + _
AnsiString(saldo) + AnsiString(",") + _
AnsiString(cap_pagado) + AnsiString(",") + _
AnsiString(monto_pagar) + AnsiString(",") + _
AnsiString(capital) + AnsiString(",") + _
AnsiString(cod_p) + AnsiString(",") + _
AnsiString(cod_pres) + AnsiString(")");
Qhistorico->SQL->Add(sTexto);
Qhistorico->ExecSQL();
aunque no obstante es mejor hacer con TTable o TADOTable utilizando los metodos Append (añade registro en blanco),Post(salva el registro en la base de datos.)
Jenncarol:
muchas gracias... :hola:
Navegación
Ir a la versión completa