Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Error con insert en firebird 2.4 (https://www.clubdelphi.com/foros/showthread.php?t=63507)

voldemmor 17-02-2009 16:38:58

Error con insert en firebird 2.4
 
Hola amigos, os molesto nuevamente, estoy tratando de hacer una incercion asobre firebird, pero me da un error, hasi que decidi hacerlo mediante codigo SQL(una prueba), desde el ems little, pero me sale un mensaje de error.

aca el codigo
Código SQL [-]
INSERT INTO GRADUADOS(
GRADUADOS.CODIGO,GRADUADOS.CODIGO_PLANTEL
,GRADUADOS.N_ACTA_MATRICULA,GRADUADOS.NOMBRES
,GRADUADOS.CI,GRADUADOS.SEXO,GRADUADOS.CALIFICACION
,GRADUADOS.FECHA_GRADUACION,GRADUADOS.OBSERVACIONES
,GRADUADOS.NIVEL_EDUCACION,GRADUADOS.ANIO_LECTIVO)
VALUES(1,"123",1,"JOSE","150057736-4","1",
17,"15/07/1999","OLA","PRIMARIA","1998-1999")

y aca la excepcion
Código SQL [-]
ARITMETIC OVERFLOW OR DIVISION BY ZERO HAS OCURRED.
ARITMETIC EXCEPTION, NUMERIC OVERFLOW, OR STRING TRUNCATION

Por favor os agradeceria su ayuda en explicarme en que estoy fallando

duilioisola 17-02-2009 17:03:21

Esto te dice que tienes uno de los siguientes porblemas:

- Has dividipo por 0. Revisa los triggers que hagan algún cálculo.

- Has metido un número demasiado grande. Revisa el tipo de campo. (smallint llega a 65.535)

- Has metido una cadena demasiado larga. Revisa los campos y verifica que quepa lo que le envías. Por ejemplo CODIGO_PLANTEL podría estar definido como varchar(2) y le envías "123" (3 caracteres)

Además, veo que la fecha que pasas es "15/07/1999"
El formato, si está separado por / es mm/dd/aaaa, por lo que estás enviando día 7 del mes 15 del año 1999.
Si el separador es - (un signo menos) el formato es dd-mm-aaaa
Si el separador es . (un punto) el formato es aaaa.mm.dd

(Los dos últimos los digo de memoria y puede que se alrevés)

Caro 17-02-2009 17:37:32

Hola, a parte de lo que te dice duilioisola, utiliza comillas simples en vez de dobles.

Cita:

Empezado por duilioisola (Mensaje 338413)
Si el separador es - (un signo menos) el formato es dd-mm-aaaa
Si el separador es . (un punto) el formato es aaaa.mm.dd

(Los dos últimos los digo de memoria y puede que se alrevés)

Es a reves, aaaa-mm-dd y dd.mm.aaaa

Saluditos

voldemmor 17-02-2009 17:41:43

Ok
 
Bueno tienes razon en lo de las longitudes, me he equibocado en la longitud de la cadena CI que es de 11 pero el campo CI era Varchar(10), ya lo modifique en la tabla.
Y al ejecuatr el ejemplo desde EMS little no hay problemas.

el error me persiste al intentar realizar el ingreso desde mi aplicacion

bueno la aplicacion la estoy realizando en .net 2005 por requerimiento del cliente el codigo es
Código PHP:

 string sexo "1";
                if (
rbtnHombre.Checked == true)
                { 
sexo "1"; };
                if (
RbtnMujer.Checked == true)
                { 
sexo "2"; };
                
string anio txtAnio+nudAnio.Value.ToString();

                
string sql "INSERT INTO GRADUADOS("+
                            
"GRADUADOS.CODIGO,"+
                            
"GRADUADOS.CODIGO_PLANTEL"+
                            
",GRADUADOS.N_ACTA_MATRICULA"+
                            
",GRADUADOS.NOMBRES"+
                            
",GRADUADOS.CI"+
                            
",GRADUADOS.SEXO"+
                            
",GRADUADOS.CALIFICACION"+
                            
",GRADUADOS.FECHA_GRADUACION"+
                            
",GRADUADOS.OBSERVACIONES"+
                            
",GRADUADOS.NIVEL_EDUCACION"+
                            
",GRADUADOS.ANIO_LECTIVO)"+
                            
"VALUES(NULL,"+
                            
"@CODIGO_PLANTEL"+
                            
",@N_ACTA_MATRICULA"+
                            
",@NOMBRES"+
                            
",@CI"+
                            
",@SEXO"+
                            
",@CALIFICACION"+
                            
",@FECHA_GRADUACION"+
                            
",@OBSERVACIONES"+
                            
",@NIVEL_EDUCACION"+
                            
",@ANIO_LECTIVO)";
               
BaseDatos db = new BaseDatos();
                try
                {
                    
db.Conectar();
                    
db.CrearComando(sql);
                    
db.AsignarParametroCadena("@CODIGO_PLANTEL""123");
                    
db.AsignarParametroEntero("@N_ACTA_MATRICULA"int.Parse(txtActa.Text));
                    
db.AsignarParametroCadena("@NOMBRES"txtNombre.Text);
                    
db.AsignarParametroCadena("@CI"txtCedula.Text);
                    
db.AsignarParametroCadena("@SEXO"sexo);
                    
db.AsignarParametroEntero("@CALIFICACION"int.Parse(txtCalificacion.Text));
                    
db.AsignarParametroCadena("@FECHA_GRADUACION"mtxtFecha.Text);
                    
db.AsignarParametroCadena("@OBSERVACIONES"txtObservaciones.Text);
                    
db.AsignarParametroCadena("@NIVEL_EDUCACION""PRIMARIA");
                    
db.AsignarParametroCadena("@ANIO_LECTIVO"anio);
                    
db.EjecutarComando();
                    
db.ConfirmarTransaccion();
                }
                catch(
Exception ex)
                {
                    
db.CancelarTransaccion();
                    
MessageBox.Show("no se ingreso"+ex.Message.ToString());
                }
                
finally db.Desconectar(); }
            }
            catch { 
MessageBox.Show("no se ejecuta"); } 


voldemmor 17-02-2009 17:42:16

Ha
 
Gracias por tu pronta respuesta


La franja horaria es GMT +2. Ahora son las 21:44:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi