Power Builder - Problemas con cursores

 
Vista:

Problemas con cursores

Publicado por Richard (14 intervenciones) el 25/10/2008 00:18:34
Hola amigos, necesito ayuda, lo que deseo hacer es cargar los datos de un campo de la tabla cliente en un control dropdownlistbox. He programado el siguiente código en el evento OPEN de la ventana que contiene a este control. El código es el siguiente:

//CARGAR DATOS EN EL CURSOR (DropDownListBox Clientes)
string vcli
Declare cur1 cursor for
Select NombreCliente
from Cliente
order by NombreCliente Asc;
open cur1;
do
fetch cur1 into:vcli;
if sqlca.sqlcode=100 then exit
Clientes.Additem(vcli)
loop while true;

close cur1 ;

La BD está en Access 2003 y el campo NombreCliente es del tipo texto. Lo curioso es que este mismo código con otra tabla funciona bien en otro programa que he hecho. He revisado paso a paso y he notado que el cursor está vacío. Por favor ayudenme, lo necesito urgente. Gracias por su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con cursores

Publicado por Jancarlo (890 intervenciones) el 25/10/2008 21:53:35
Amigo, lo que te recomendaria es evitar el uso de Cursores dentro de tu aplicativo, de cierta forma afecta la performace del equipo, lo mismo para cualquier otra sentencia sql embedida.
Lo que puedes hacer en ese caso es usar un DataStore, logicamente que contenga el mismo query de tu cursor. Algo asi:

DataStore lds_cursor
Long ll_row

lds_cursor = Create DataStore
lds_cursor.DataObject = 'd_clientes'
lds_cursor.SetTransObject(Sqlca)
lds_cursor.Retrieve()

For ll_row = 1 To lds_cursor.RowCount()
Clientes.AddItem(lds_cursor.GetItemString(ll_row, 'nomb_clie'))
Next

Destroy lds_cursor

Tambien podria ser más optimo si en vez de usar un DDLB (DropDownListBox) usas un DDDW que contenga a la lista de los clientes.

Espero te sirva de ayuda.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar