Re: Rellenar Varios Combos De Varios Formularios Iguales A La Vez?
En la
Utilidad que subí hace unos días hay un módulo llamado formularios que tiene varias funciones para rellenar los campos, grabar los datos, rellenar los combos, etc. de forma automática. Adjunto el código aquí y si quieres verlas en funcionamiento, pues bájate la utilidad y la testeas.
Esta es la función llenalista, recibe el objeto combo a rellenar, el nombre de la tabla de donde sale la lista, el campo que queremos rellenar y opcionalmente dos más que aparecerán separados por - o · y la condición de filtrado de la tabla a buscar (opcional también)
PUBLIC SUB llenalista(oCombo AS ComboBox, tabla AS String, campo AS String, OPTIONAL mostrar AS String, OPTIONAL mostrar2 AS String, OPTIONAL condicion AS String) AS String[]
'Rellena un combobox con el contenido de campo y, opcionalmente de
'otros dos campos más. En cuyo caso aparecen separados por la cadena " · "
DIM rs AS Result
DIM retorno AS String[]
DIM valor, cond, cSql AS String
retorno = NEW String[]
IF condicion THEN cond = " where " & condicion
IF mostrar THEN
cSql = "select " & mostrar & ", " & campo & " from " & tabla & cond & " order by " & mostrar
IF mostrar2 THEN
cSql = "select " & mostrar & ", " & mostrar2 & ", " & campo & " from " & tabla & cond & " order by " & mostrar & ", " & mostrar2
ENDIF
ELSE
cSql = "select " & campo & " from " & tabla & cond & " order by " & campo
ENDIF
rs = comun.hconn.Exec(cSql)
WHILE rs.Available
retorno.Add(If(mostrar, rs[mostrar] & If(mostrar2, " - " & rs[mostrar2], "") & " · " & rs[campo], rs[campo]))
IF rs[campo] = oCombo.text THEN
valor = If(mostrar, rs[mostrar] & If(mostrar2, " - " & rs[mostrar2], "") & " · " & rs[campo], rs[campo])
ENDIF
rs.MoveNext
WEND
oCombo.list = retorno
oCombo.Text = valor
END
Luego en la función que graba los datos (no la muestro entera) a la hora de grabar el combo:
rsDatos[campo.Name] = If(InStr(valor, " · ") > 0, Right(valor, Len(valor) - InStr(valor, " · ") - 3), valor)
No sé si soy demasiado confuso. Me temo que sí.