Saludos.
tengo la siguiente situación:
una tabla con dos registros de 36 campos (mariaDB)
y hago la siguiente consulta:
- Code: Select all Expand view
- cTabla := _cPrefijo+"_articulos"
cQuery := "Select * from "+cTabla +" ORDER BY descripcion"
oArticulos:= _oSqlConex:Query( cQuery )
luego mando a hacer esto:
- Code: Select all Expand view
- Redefine ListBox oListbox fields oArticulos:codigo_fabrica , oArticulos:descripcion ,oArticulos:codigo_interno ;
Id 10 of oDlg Headers 'Código Fábrica','Descripción','Modelo' FieldSizes 170 , 410 , 100
resulta que muestra en el listbox un solo registro y repetido 39 veces
ahora bien, si hago esto:
- Code: Select all Expand view
cTabla := _cPrefijo+"_articulos"
cQuery := "Select * from "+cTabla +" ORDER BY descripcion"
oArticulos:= _oSqlConex:Query( cQuery )
aArreglo :=oArticulos:FillArray() //hago una copia del resultado de la consulta
Redefine ListBox oListbox fields aArreglo[oListbox:nAt,1] , aArreglo[oListbox:nAt,2] , aArreglo[oListbox:nAt,3] ;
Id 10 of oDlg Headers 'Código Fábrica','Descripción','Modelo' FieldSizes 170 , 410 , 100
Funciona perfecto y muestra los 2 registros con su informacion correcta.
En el listbox tengo colocado : oListbox:SetArray( oArticulos ) o oListbox:SetArray( aArreglo ) segun el caso
Pregunto: ¿Por que falla usando directamente el resultado de la consulta (oArticulos) pero si trabajo sobre una copia del mismo lo hace bien?
Si consulto la longuitud de oArticulos me dice 39, lo que no es cierto, si consulto la longuitud de la copia es 2, como es correcto.
Como podrán ver, es imposible trabajar sobre una copia donde tengo que estar adivinando que elemento voy a mostrar (aArreglo[x,y])
en lugar de llamarlo por su nombre (oArticulo:codigo_fabrica)
Se agradece, como siempre, cualquier ayuda u orientacion pero sobre todo una explicacion de que esta sucediendo.
No soy para nada un experto en mysql/MariaDB. Estoy comenzando apenas.
Un abrazo.