Ver Mensaje Individual
  #3  
Antiguo 23-06-2008
Edgtho Edgtho is offline
Miembro
 
Registrado: abr 2006
Posts: 47
Reputación: 0
Edgtho Va por buen camino
No es incongruente si es por ejemplo si es una tabla de articulos que tenga "Codigo;clase" como clave, o por ejemplo Albaran(codigo) y Lineas de albaran(codigo,linea).

El problema no esta en el diseño de la tabla, si no en el clientdataset. En lo que delphi manda. Por lo del alter table me parece que en realidad has entendido mal mi pregunta. Yo indique que haciendo una consulta no pasaba nada sino que era a traves del clientdataset cuando existia el problema.

Al final he encontrado la respuesta:

Si tenemos un clientdataset ( sqlconnection -> query -> provider -> clientdataset) al abrirlo este trae las definiciones de campos, pues los campos que son la clave primaria se marcan primero como REQUERIDOS, este valor se puede quitar (required=false) pero el problema principal es cuando el tipo de campos es ademas STRING.

Los Tfields del clientdataset de tipo string (TStringfield) tiene una propiedad llamada TRANSLITERATE. Si pasamos '', nil, char(#0) o cualquier derivado saltara el fallo "Field value required" o "reader has no more rows" si quitamos TRANSLITERATE e insertamos un valor ' ' no tenemos el problema y el campo se inserta (notese que hay un espacio en blanco).

Despues hay que hacer una chapucilla mandando un update table para eliminar dichos espacios en blanco sobre ese campo, que al efectuarse en el lado del servidor no hay problema entonces.

Esto me parece que es un problema de Delphi2007 con los clientdataset, me falta comprobar si falla tambien en Delphi7.
__________________
Dios es real a menos que sea declarado entero
Responder Con Cita