Schweiko Lt JG

Registrado: 05 Jun 2008Mensajes: 65Ubicación: Argentina - Misiones
|
Publicado: Jue 09 Dic, 2010 5:49 am Asunto: Ayuda con una Sentencia de Insert |
|
|
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... |
|