Llenar base de datos desde powerBuilder
Desde Venezuela!
Soy completamente novato en PowerBuilder y debo desarrollar una nueva
aplicación. El lenguaje en sí no es complicado, pero veo que el tema
principal es el DataWindows y DataStore...
Mi problema es el siguiente:
Tengo un archivo con el siguiente formato (simplifiquemos el problema):
-Titulo 1
valor 1 ... Valor N
-Titulo 2
valor 1 ... Valor M
...
-Titulo k
valor 1 ... Valor L
He creado una base de datos en SQL Anywhere.. Que para resumir el problema,
digamos que tengo las tablas A, y B...
-Tabla A:
id_a auto increment
Nombre
--------
-Tabla B:
id_b autoincrement
fk_id_a
Nombre
Cada "título" debe ser guardado como un registro en A, y cada "valor"
Como un registro en B que está asociado a un título... En esencia es
fácil y sencillo...
Actualmente
Puedo insertar y recuperar los datos con los DataWindows en la tabla A,
hasta ahí voy bien... El problema para mí es al momento de insertar en
la tabla B...
- Estoy recorriendo el archivo, y momentáneamente
almaceno los datos en dos DW,.. A y B... Fácil... Y los DW me simulan
bien lo que quiero... Y puedo pasar los datos del DW_A a la tabla A sin
problemas...
- Pero como los id de las tablas son autoincrement,
cómo hago para saber el id que acaba de ser insertado en A y así
"¿Enlazar" los próximos "valores" con ese registro?...
Por ahora estoy haciendo algo un poco complicado:
// -- ciclo hasta que se acabe el archivo
ls_titulo = leer_titulo()
row = dw_A.insertRow(0)
dw_A.setItem(row, "nombre", ls_titulo)
dw_A.acceptText()
dw_A.update()
ID_A = dw_A.getItemNumber(row, "id_A")
// -- ciclo hasta encontrar otro titulo
ls_valor = leer_Valor()
row = dw_B.insertRow(0)
dw_B.setItem(row, "nombre", ls_valor)
dw_B.setItem(row, "fk_id_a", ID_A)
// -- fin del ciclo de valores
dw_B.acceptText()
dw_B.Update()
// fin ciclo principal...
Esto funciona, y funciona bien... Pero realmente tengo 4 tablas anidadas en cadena, y esta forma no me parece que sea la correcta, porque tengo que anidar 4 FORs y antes de cada uno tengo que hacer el dw.update() para recuperar la nueva clave que ha sido ingresada... Por supuesto que puedo abstraer el proceso de cada FOR en una función y reducir código, pero igual el proceso seguiría repitiéndose la misma cantidad de veces, y ese UPDATE es el que no me gusta...hay alguna forma más transparente de hacerlo? ¿O así debe ser en PowerBuilder?
El jefe me dijo que todas las validaciones y en general casi todo se puede con los DataWindows, pero no sé por dónde investigar estas estructuras;