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)
-   -   Errores al actualizar (https://www.clubdelphi.com/foros/showthread.php?t=201)

lafirma 08-05-2003 00:17:30

Errores al actualizar
 
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:

Código:

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

Código:

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:

Código:

Cast(Cast(campo1 as VarChar(10))||Cast(campo2 as VarChar(10)) as Integer);
Y debiera funcionar.

Hasta luego.


La franja horaria es GMT +2. Ahora son las 15:18:41.

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