PDA

Ver la Versión Completa : Errores al actualizar


lafirma
08-05-2003, 00:17:30
Estoy usando firebird 1.0 con IBX, tengo 2 dataset de dos tablas relacionadas, padre - hijo, y se me presentan 2 problemitas...
1. Tengo un generador que lo uso con uno de los datasets en el Post y cuando realizo un ApplyUpdates todo va bien hasta que intento actualizar el Dataset de la tabla hija, me da un error de not in edit mode, aunke no he hecho el applyupdates de este dataset porke primero tengo ke proporcionarle el valor del campo ke funciona como foreign key (el ke produsco con el primer dataset y el generator).
2. En estas mismas tablas uso una constraint Foreign basado en campos pero aparentemente no funciona, puesto que aunke establezco los valores correctos para cada campo en las 2 tablas.

Una ultima:
necesito sumar 2 campos enteros pero ke el resultado sea una cadena o sea que si sumo 1+2 no sea 3 sino ke '12', este mismo resultado al final debo obtenerlo como entero de la forma 12 y no '12' como cadena. Esto dentro de un triger de firebird. Como le hago?

jachguate
08-05-2003, 01:37:22
De tu primera pregunta, te debo la respuesta...

sobre la segunda, la solución deberia ser algo como (suponiendo que es en un trigger):

La tabla es:


Create table Prueba (
Numero1 Integer,
Numero2 Integer,
Num3s VarChar2(30),
Numero3 Integer
);



Begin
New.Num3s = Cast(New.Numero1 as String)||Cast(New.Numero2 as String);
New.Numero3 = cast(New.Num3s as Integer);
End


Hasta luego.

jachguate
08-05-2003, 01:39:12
Fe de erratas:

El primer cast es Cast(x as VarChar) y no Cast(x as String);

Hasta luego.

guillotmarc
08-05-2003, 01:41:43
Hola.

Un pequeño desliz, también hay que indicar el tamaño :

El primer cast es Cast(x as VarChar(30)) y no Cast(x as String);

Saludos.

lafirma
08-05-2003, 03:43:57
me parece que es justamente lo que necesito
aunque veo que usas un tercer campo que no me gustaria tenerlo, es completamente necesario que tenga ese campo
el asunto es que los dos numeros sean concatenados y no sumados pero el resultado debe ser siempre un integer
puedo hacerlo de alguna forma sin pasar por el campo de tipo varchar?

jachguate
09-05-2003, 18:12:51
No es necesario. El campo lo utilice solamente para aclarar... pero podes hacer directamente:


Cast(Cast(campo1 as VarChar(10))||Cast(campo2 as VarChar(10)) as Integer);


Y debiera funcionar.

Hasta luego.