Datawindow Error

Al accesar a una ventana (en tiempo de ejecución) me da el siguiente error
"Select Error: SQLSTATE = 01004
[Sybase][ODBC Driver]Data Truncated
Aceptar"
¿Quisiera saber porqué y qué es lo que está pasando?.

1 Respuesta

Respuesta
2
El SQLSTATE contiene los errores de los terceros, en este caso los manejadores ODBC o JDBC, este mensaje puede ser anulado, simplemente añadiendo a la conexion SQLCA.dbParm = "MsgTerse = 'No'"
Sin embargo, esto es información vital para el programador.
Algunas cosas que pueden servirte para intentar solucionar el problema:
*- verificar el script incluido en el datawindow, de tal manera que coincidan las columnas seleccionadas con las existentes en la base de datos.
*- verificar los tipos de las columnas recogidas en el datawindow, contra los tipos de la tabla a interrogar
*- posiblemente estas desarrollando en una base de datos y la produccion esta en otra y no estan iguales las tablas que se interrogan.
*- hacer una prueba copiando el script incluido en el datawindow y ejecutarlo por separado, desde afuera del datawindow.
Si esto no funcionara el problema más esta enfocado en los siguientes aspectos.
1- El nombre de la tabla o las columnas son muy grandes, pb trunca dichos nombres y limita el campo de acción.
2- Has hecho una modificación de un campo tipo string, en una tabla y el datawindow esta recogiendo la dimension anterior ( creo que esto es lo más seguro).
Voy a centrarme en este ultimo pues una vez tuve un problema similar, y estoy convencido que esto es la razón de tu problema, por lo que te doy varios tips, para resolver dicho problema.
*- existe una manera de modificar el codigo interno de un objeto cualquiera que sea, es un poco peligroso tienes que poner mucha atencion, si estas usando una version menor a la 8.0, no tienes disponible la opcion EDIT SOURCE, en esta version, esta opcion genera un script tipo texto, en el cual puedes hacer modificaciones y luego grabarlas, inmediatamente estas son compiladas e integradas dentro de tu libreria.
Si este no es el caso, en las versiones anteriores ( también en la 8.0) pulsando el botón derecho encima de cualquier objeto, aparece la opción de EXPORT o exportar, esto genera un archivo o fichero tipo texto, igualmente en este puede hacer cambios, luego para que estos cambios sean recogidos por la librería, debes pulsar el botón derecho del ratón, encima de la librería que contiene el objeto a modificar, y seleccionar la opción IMPORT, esta opción permite seleccionar el archivo o fichero antes mencionado, y esta acción integra este script en la librería.
Cosas a tener en cuenta
CUIDADO! Como dije antes, esto hay que hacerlo con mucho cuidado, antes de cualquiera cosa, recomiendo que hagas una copia de seguridad de tu librería o aplicación, ( por si cualquier cosa pueda suceder)
Una vez que generes el export y verifiques que el código fue generado, te recomiendo que borres de la librería, el objeto en función, pues power builder permite integrar objetos duplicados en diferentes librerías, luego en la generación del ejecutable, te puedes encontrar con SORPRESAS.
ANTES, de modificar el script generado, genera una copia de este, (también por si acaso).
La modificación del script.
Busca el nombre de la columna que tiene diferente dimension entre lo que esta definodo en el datawindow y la tabla, y simplemente modifica el valor, esto generalmente lo encuentra seguido de la palabra TYPE, y podría estar más o menos así
column(type=char(20) .......
Simplemente cambias 20 por 30 grabas y haces lo que anteriormente expongo.
Ultima opción:
Si todo esto es muy complicado, o te parece que puedes sentirte inseguro de ello, lo más simple es borrar el datawindow, y volver a hacerlo, esto puede ser tedioso si el datawindows en función es muy complicado, o laborioso.
Situación extrema:
Si añades a tu script de conexión lo siguiente
SQLCA.DBParm = "StaticBind=0"
Power builder no verifica que el tamaño del campo de la tabla sea igual al declarado en el datawindow.
ESTO SOLUCIONA INMEDIATAMENTE, sin cambios en tu aplicación, PERO, si el valor es vital, no va a ser recibido COMPLETO.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas