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

[0] Índice de Mensajes

Ir a la versión completa