Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Ayuda con una Sentencia de Insert

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Ayuda con una Sentencia de Insert Responder citando

hola gente, les comento, estoy tratando de guardar una cabecera de una factura en una tabla. Uso Firebird 2.x.x
les paso el codigo despues de validar todos los datos:

Código:

   //GUARDANDO CABECERA
   Form1->IBTransaction1->Active=true;
   this->IBQCabeza_factura->Active=false;
   this->IBQCabeza_factura->SQL->Clear();
   this->IBQCabeza_factura->SQL->Add("Insert Into FACTURERO (NUMERO,FECHA,SENIOR,DOMICILIO,IVA,COND_DE_VENTA, REMITO, TARJETA, NUM_TARJETA, CUIT_NUM, TOTAL ) Values (:NUM,:FEC,:SEN,:DOM,:IVA,:CDV,:REM,:TARJ, :NUM_TARJ, :CUIT, :TOT)");

   this->IBQCabeza_factura->ParamByName("NUM")->AsInteger=StrToInt(ENum_fac->Text);
   this->IBQCabeza_factura->ParamByName("FEC")->AsDate=this->DateTimePicker1->Date.FormatString("dd/mm/yyyy");
   this->IBQCabeza_factura->ParamByName("SEN")->Text=ESenior->Text;
   this->IBQCabeza_factura->ParamByName("DOM")->Text=EDomicilio->Text;

   switch(DBRadioGroup1->ItemIndex){
      case 0: this->IBQCabeza_factura->ParamByName("IVA")->Text="N"; break;
      case 1: this->IBQCabeza_factura->ParamByName("IVA")->Text="C"; break;
      case 2: this->IBQCabeza_factura->ParamByName("IVA")->Text="E"; break;
      case 3: this->IBQCabeza_factura->ParamByName("IVA")->Text="M"; break;
   }

   switch(this->DBRadioGroup2->ItemIndex){
      case 0: this->IBQCabeza_factura->ParamByName("CDV")->Text="Contado";break;
      case 1: this->IBQCabeza_factura->ParamByName("CDV")->Text="Cuenta Corriente";break;
   }

   this->IBQCabeza_factura->ParamByName("REM")->AsFloat=StrToFloat(ERemito->Text);
   this->IBQCabeza_factura->ParamByName("TARJ")->Text=ETarjeta->Text;
   this->IBQCabeza_factura->ParamByName("NUM_TARJ")->AsInteger=StrToInt(ENumtarj->Text);
   this->IBQCabeza_factura->ParamByName("CUIT")->Text=ENumCuit->Text;
   this->IBQCabeza_factura->ParamByName("TOT")->AsFloat=StrToFloat(ETotal->Text);

   this->IBQCabeza_factura->Prepare();
   this->IBQCabeza_factura->ExecSQL();
   Form1->IBTransaction1->CommitRetaining();


la tabla es la siguiente:
Código:
CREATE TABLE FACTURERO (
  NUMERO INTEGER NOT NULL,
  FECHA DATE NOT NULL,
  SENIOR VARCHAR(50) CHARACTER SET ISO8859_3 DEFAULT '' NOT NULL COLLATE ISO8859_3,
  DOMICILIO VARCHAR(50) CHARACTER SET ISO8859_3 COLLATE ISO8859_3,
  IVA DM_IVA NOT NULL,
  COND_DE_VENTA VARCHAR(30) CHARACTER SET ISO8859_3 COLLATE ISO8859_3,
  REMITO VARCHAR(50) CHARACTER SET ISO8859_3 COLLATE ISO8859_3,
  TARJETA VARCHAR(30) CHARACTER SET ISO8859_3 COLLATE ISO8859_3,
  NUM_TARJETA INTEGER,
  CUIT_NUM VARCHAR(30) CHARACTER SET ISO8859_3 COLLATE ISO8859_3,
  TOTAL DM_DINERO NOT NULL,
  CODIGO INTEGER NOT NULL);


ALTER TABLE FACTURERO ADD PRIMARY KEY (CODIGO);


SET TERM ^ ;

CREATE TRIGGER BI_FACTURERO_CODIGO FOR FACTURERO
ACTIVE BEFORE INSERT
POSITION 0
AS
BEGIN
  IF (NEW.CODIGO IS NULL) THEN
      NEW.CODIGO = GEN_ID(FACTURERO_CODIGO_GEN, 1);
END^

SET TERM ; ^

SET TERM ^ ;

CREATE TRIGGER FACTURERO_BI FOR FACTURERO
INACTIVE BEFORE INSERT
POSITION 1
AS
BEGIN
  /* Trigger body */
  NEW.CODIGO=GEN_ID(G_CODIGO_FACTURERO,1);
END^

SET TERM ; ^




el domains dinero es el siguiente

Código:

CREATE DOMAIN DM_DINERO AS
  NUMERIC(9, 2)
  NOT NULL;




El error se produce en la linea this->IBQCabeza_factura->ExecSQL();

y me dice lo siguiente :

"Dynamic SQL Error.
SQL error code = -303
arithmetic exception, numeric overflow, or string truncation"

pero no he podido solucionarlo. llevo dias viendolo...
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Ya esta solucionado. no me habia percatada de que el remito es VARCHAR y no un numero. Saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.