Ya vengo renegando bastante con este tema que no se arregla nunca, y es que el dblookupcombobox tiene un bug que no hace el locate del registro seleccionado, y encima me encuentro con que si elijo el el segundo item el valor del keyvalue viene nulo, por lo que no puedo hacer un locate manual en el evento onchange u onselect Alguien tiene alguna solucion para estos controles, o algun otro metodo para este tipo de seleccion
Mailing lists / lazarus-es / 2011-12
Dblookupcombobox anidados no funciona
12 messages · 4 people · –
- JJosé Mejuto 5
- MMaxi 5
- GGastón Dall' Oglio 1
- MMaximiliano Duarte 1
Reply by email Subscribe to this list Your subscription
Read-only archive. Use j and k to move between messages.
Hello Maxi,
Thursday, December 29, 2011, 6:55:47 PM, you wrote:
M> Ya vengo renegando bastante con este tema que no se arregla nunca, y M> es que el dblookupcombobox tiene un bug que no hace el locate del M> registro seleccionado, y encima me encuentro con que si elijo el el M> segundo item el valor del keyvalue viene nulo, por lo que no puedo M> hacer un locate manual en el evento onchange u onselect M> Alguien tiene alguna solucion para estos controles, o algun otro M> metodo para este tipo de seleccion
Puedes poner un ejemplo del problema ?
Desde hace algunas revisiones los lookupcombo tienen una nueva opci�n que es "ScrollListDataset" que supongo que hace lo que tu buscas.
Show quoted text 6 lines
En que propiedad est� esa opcion que no la encuentro?
para el ejemplo tendria que armarte algo simple, pero te explico que necesito. Estoy armando una agenda para llevar turnos, debo seleccionar el m�dico y este puede tener mas de un tipo de atencion, entonces si selecciono uno que tiene mas de 1 elijo cual corresponde al paciente.
Si elijo el profesional 1 deberia filtrarme 2 registro, si elijo el profesional 2 me trae 1 solo, con grillas anda, pero con los dblookupcombobox no se mueven
Profesionales
ID | NOMBRE
---|---------------
1 | LOPEZ
2 | PEREZ
Prof_x_Tipo
ID_TIPO | ID_PROF
---|------------------------
1 | 1
2 | 1
1 | 2
TipodeAtencion
ID | NOMBRE
---|---------------
1 | PSQUIATRIA
2 | NEUROCOGNITIVO
Hola.
F�jate que el 4/11 yo mande un mail consultando algo similar. A mi el locate me andaba, lo que no funcionaba es la actualizaci�n del listado desplegado. A�n no la encontr� soluci�n, y los controles lookup de rx ten�an problemas peores.
Saludos.
El 29/12/2011 16:26, "Maxi" <maximiliano.duarte en gmail.com> escribi�:
Show quoted text 57 lines
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20111229/7e99fe33/attachment.html>
En que propiedad est� esa opcion que no la encuentro? para el ejemplo tendria que…
Hello Maxi,
you wrote> Desde hace algunas revisiones los lookupcombo tienen una nueva opci�n > que es "ScrollListDataset" que supongo que hace lo que tu buscas.
M> En que propiedad est� esa opcion que no la encuentro?
No la encuentras por que est� en las �ltimas revisiones, como de hace una semana o dos.
M> para el ejemplo tendria que armarte algo simple, pero te explico que necesito. M> Estoy armando una agenda para llevar turnos, debo seleccionar el M> m�dico y este puede tener mas de un tipo de atencion, entonces si M> selecciono uno que tiene mas de 1 elijo cual corresponde al paciente.
Usas SQLDb o Zeos ?
Ahora estoy usando zeos. Pero estoy a tiempo de cambiar
Enviado desde mi BlackBerry
Earlier message 31 lines
Hello Maximiliano,
Friday, December 30, 2011, 12:29:07 PM, you wrote:
MD> Ahora estoy usando zeos. Pero estoy a tiempo de cambiar
No, no cambies :) Esas cosas justo en SQLDb fallan, o al menos a mi me fallan y para este tipo de aplicaciones me he tenido que pasar a Zeos contra mi deseo.
Te lo dec�a por que en los �ltimos Lazarus o fpc (no tengo claro 100%) qui�n es el culpable tengo problemas con el uso de bases de datos, estoy buscando el causante del problema.
La verdad que yo estoy muy conforme con zeos, pero el problema es del control, porque segui el codigo y no manda a hacer el locate del registro seleccionado, que es asi como deberia ser, y porque digo esto? si uno usa un lookup para seleccionar un valor pero ademas necesita de otro valor en la consulta al seleccionar el item podria consultar el registro.
Te mando un ejemplo de lo que quiero para que veas y me corrijan si esta mal hecho.
Cuando uso el estilo csDropDownList y uso el listsource, puedo hacer el locate manualmente correctamente para que las consultas mueva el puntero pero no puedo refrescar el segundo combo, siempre queda con el primer valor.
Basicamente necesito refrescar el segundo combo segun lo que est� en el segundo query
Sino se me ocurre otra cosa que cambiar la clave de busqueda con un ID de registro en la relacion entre tablas para usar un solo combo.
Como me rechaza por el archivo adjunto lo agrego en mi dropbox para que bajen el codigo
http://dl.dropbox.com/u/1641023/Prueba.rar
encontre entre los bugtracker este arreglo pero no se como aplicarlo
http://bugs.freepascal.org/view.php?id=19653
--- tmp/rabbitvcs-1-base-dblookup.inc
+++ home/fabiolg/lazarus/lcl/include/dblookup.inc
@@ -386,9 +386,9 @@
end;
if not (Assigned(FListLink.DataSet) and Assigned(FListField)) then
Exit;
- LinkGetBookMark;
+ //LinkGetBookMark;
try
- if FListLink.DataSet.Locate(FListField.FieldName,
VarArrayOf([AListFieldValue]), []) then
+ if FListLink.DataSet.Locate(FListField.FieldName, AListFieldValue, []) then
begin
FControlLink.DataSet.Edit;
for I := 0 to FDataFields.Count -1 do
@@ -397,7 +397,7 @@
FControlLink.Field.AsString := AListFieldValue;
end;
finally
- LinkGotoBookMark;
+ //LinkGotoBookMark;
end;
end;Hello Maxi,
Tuesday, January 3, 2012, 2:25:23 PM, you wrote:
M> encontre entre los bugtracker este arreglo pero no se como aplicarlo
Ese arreglo lo incluye Lazarus desde hace 15 dias, de modo que si te bajas una versi�n reciente ya est� aplicado (con la opci�n que te comentaba en otro mensaje).
Si quieres aplicar el parche ese a tu c�digo, abre el archivo:
lazarus/lcl/include/dblookup.inc
Va a eso de la linea 386
y cambias:
-----------------
end;
if not (Assigned(FListLink.DataSet) and Assigned(FListField)) then
Exit;
LinkGetBookMark;
try
if FListLink.DataSet.Locate(FListField.FieldName,VarArrayOf([AListFieldValue]), []) then
begin
FControlLink.DataSet.Edit;
for I := 0 to FDataFields.Count -1 do
[4 o 5 lineas m�s abajo]
FControlLink.Field.AsString := AListFieldValue;
end;
finally
LinkGotoBookMark;
end;
end;
-----------------por
------------------------
end;
if not (Assigned(FListLink.DataSet) and Assigned(FListField)) then
Exit;
//LinkGetBookMark;
try
if FListLink.DataSet.Locate(FListField.FieldName, AListFieldValue, []) then
begin
FControlLink.DataSet.Edit;
for I := 0 to FDataFields.Count -1 do[4 o 5 lineas mas abajo]
FControlLink.Field.AsString := AListFieldValue;
end;
finally
//LinkGotoBookMark;
end;
end;
-----------------------Pero recuerda que este cambio ser� incompatible con versiones futuras de Lazarus.
Ese arreglo lo incluye Lazarus desde hace 15 dias, de modo que si te bajas una versi�n reciente ya est� aplicado (con la opci�n que te comentaba en otro mensaje).
Esta es la version svn o la estable?
Yo tengo instalado CodeTyphon, con una version de lazarus svn 9.31 33300, y en la web de CodeTyphon, no veo una actualizacion, y creo que ello llevan su propio svn.
Que dicen, puedo bajarle una actualizacion igual?
Hello Maxi,
you wrote> Ese arreglo lo incluye Lazarus desde hace 15 dias, de modo que si te > bajas una versi�n reciente ya est� aplicado (con la opci�n que te > comentaba en otro mensaje). >
M> Esta es la version svn o la estable?
M> Yo tengo instalado CodeTyphon, con una version de lazarus svn 9.31 M> 33300, y en la web de CodeTyphon, no veo una actualizacion, y creo que M> ello llevan su propio svn.
M> Que dicen, puedo bajarle una actualizacion igual?
Lo que puedes hacer es tomar buena nota de lo que haces con ese cambio, y saber que cuando actualizes la versi�n debes o bien volver a aplicar los mismos cambios o si ya est� disponible la nueva propiedad usarla en vez del cambio de los fuentes.
La revisi�n del cambio era la 34000 aproximadamente, en concreto 34389:
http://svn.freepascal.org/cgi-bin/viewvc.cgi?view=rev&root=lazarus&revision=34389
