Pipeline

Mi problema es que estoy desarrollando una aplicación en powerbuilder donde necesito ejecutar un pipeline para copiar una tabla de una base de datos a otra cuando se inicia la aplicación.
He seguido según yo todos los pasos que indica en los libros en linea y aun así no funciona.
No me marca ningún error pero no copia los registros, unicamente la estructura de la tabla.
Se conecta bien a las bases de datos.
Se crean bien los objetos y cuando inicio el pipeine dice que todo salio bien, o sea me regresa un 1.
Ahí va el código de donde inicio para ver si se entiendo mejor.
integer li_start_result
li_start_result = i_pipe.Start(trans_atenea, trans_poliza,dw_1)
CHOOSE CASE li_start_result
CASE -3
Beep (1)
MessageBox("Piping Error", "Quarterly_Extract table already exists ...")
RETURN
CASE -4
Beep (1)
MessageBox("Piping Error", "Quarterly_Extract table does not exist..")
RETURN
END CHOOSE
messagebox("",string(li_start_result))
messagebox("error", String(i_pipe. RowsInError))
messagebox("leidos", String(i_pipe. RowsRead))
messagebox("escritos", String(i_pipe. RowsWritten))
En rowsinerror hay un cero, pero rowsread y rowswriten tambie tienen cero, aunque la tabla original si tenga datos.
Espero puedas decirme por donde buscarle o cual es tu diagnostico.

3 respuestas

Respuesta
1
Nunca he utilizado las pipelines desde código, solo directamente desde el painter. Si dices que los objetos transacción están conectados OK, y que la función devuelve 1, es que ha ido bien. Que yo sepa, la opción de la pipeline Create/Add Table implica la copia de las filas. Quizás sea un bug de la version, ¿cuál es? Creo que el Commit es también automático, cada N filas o al final, prueba de hacer Commit explícitamente. Otra cosa, la pipe la has creado bien, ¿con la instrucción CREATE? Supongo que si, sino te daría un error de ejecución.
Una ultima cosa ... ¿estas seguro de adonde apuntan los objetos transacción? Comprueba los atributos ( dbms, servidor, usuario etc. ) de ellos. Y que no haya algún trigger por ahí que te borre filas ( muy dudoso ).
Suerte !
Respuesta
1
Deberías revisar las conexiones a las bases de datos.
Sin embargo todo parece estar bien. Porque no ma envías la aplicación (PBL) y la Base de datos. Preferiblemente extracta de ella lo que estamos esudiando y podemos chatear.
No se me ocurre otra idea para ayudarte.
[email protected]
Respuesta
1
Para determinar cual es exactamente el problema debes desplegar los códigos de error por cada transacción abierta, por ejemplo:
Despeues del end choose escribe:
MeesageBox("SQLCODE", string(trans_atenea.sqlcode")
MeesageBox("SQLDBCODE", string(trans_atenea.sqldbcode")
MeesageBox("SQLERRTEXT", string(trans_atenea.sqlerrtext")
MeesageBox("SQLCODE", string(trans_poliza.sqlcode")
MeesageBox("SQLDBCODE", string(trans_poliza.sqldbcode")
MeesageBox("SQLERRTEXT", string(trans_poliza.sqlerrtext")
Ejecuta tu aplicación y anota el resultado, dependiendo de este se determina cual es el problema que puede ser desde que, el archivo fuente no coincide con el registro lógico de la tabla destino, hasta que alguna regla de validación no te permita grabar algún dato en una columna por no cumplir con la misma, recuerda que en el pipeline defines el numero máximo de errores permitidos y si al ejecutarlo los sobrepasa no te grabara nada.
Muchas gracias, ya resolví el problema y efectivamente tenia que ver con las conexiones, por alguna razón en cada ejecucucio se quedaba conectado a la misma base de datos a la que me conectaba después al inicio de la siguiente ejecución, cuando ejecutaba en pipeline la base de datos de origen y destino eran las mismas.
Gracias de nuevo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas