PDA

Ver la Versión Completa : duda con dblookupcombobox


donpedro
29-11-2012, 21:08:44
hola a todos, espero que esten bien y que Dios me los Bendiga mucho.......
agradezco de antemano la ayuda que me pueden brindar con respecto a este problemilla...

estoy trabajando con delphi 2010, mysql como base de datos.
en estos momentos estoy truncado con un modulo que trata de asignarle a un profesor los cursos y las materias que va a impartir
aqui les muestro la imagen.
https://lh4.googleusercontent.com/-RRb56j9fTUs/ULe9V60EnvI/AAAAAAAAAFo/ZVUQWODZO3M/s902/modulo.jpg

excusen el dbgrid en el medio, es solo para ver el comportamiento en la tabla.....

lo que esta pasando es que al elegir el curso y la tanda y despues de asignar las materias,,,, al grabar me lo graba como lo muestra en el dbgrid. me graba el curso y la tanda en el primer registro y despues las demas cosas....no se si es un comportamiento de dblookupcombobox que al elegir coloca la tabla en insert e introduce el dato automaticamente....no se si me di a entender, pero aki le agrego el codigo que estoy utilizando para grabar.

procedure TFMATERIASPORPROFESOR.BGUARDARClick(Sender: TObject);
var b:integer;
begin
with dmdatos do
begin


for b := 0 to Listbox2.items.Count - 1 do
begin

dmdatos.ATMATERIASPORPROFESOR.Append;

ATMATERIASPORPROFESORPROFESORID.AsString:=EID.Text;
ATMATERIASPORPROFESORNOMBRES.AsString:=LNOMBRE.Caption;
ATMATERIASPORPROFESORCEDULA.AsString:=LCEDULA.Caption;
ATMATERIASPORPROFESORGRADO.AsString:=EGRADO.Text;
ATMATERIASPORPROFESORTANDA.AsString:=ETANDA.Text;
ATMATERIASPORPROFESOR.FieldByName('MATERIAID').ASSTRING:=listbox2.items[b];
ATMATERIASPORPROFESOR.Post;

SHOWMESSAGE('DATOS GRABADOS EXITOSAMENTE');

END;

end;

end;

ecfisa
29-11-2012, 21:47:55
Hola donpedro.

Si no entiendo mal tu duda, es el comportamiento normal.

Siempre y cuando la propiedad AutoEdit del TDataSource enlazado a la propiedad DataSource del TDBLookupComboBox esté en True, este asignará el valor del campo definido en la propiedad KeyField al definido en la propiedad DataField automáticamente. Y por tanto antes del evento OnClick del TButton.

Saludos.

Edito: Lo último dicho, por supuesto es válido si realizas una selección en el combo antes de pulsar el boton BGUARDAR.

donpedro
29-11-2012, 22:12:17
si pongo false el autoedit entonces no me funcionan los dblookupcombobox,,,, como hago para que no me pase eso,,,, sino que me grabe normal

ecfisa
29-11-2012, 22:28:25
si pongo false el autoedit entonces no me funcionan los dblookupcombobox,,,, como hago para que no me pase eso,,,, sino que me grabe normal
Hola.

Lo que entiendo, y si estoy equivocado corregime, es que deseas que todas las asignaciónes a los campos se realize en el evento OnClick del TButton.

Entonces podrías dejar en blanco las propiedades DataSource y DataField de los TDBLookupComboBox y en el evento OnClick hacer:

with dmdatos.ATMATERIASPORPROFESOR do
begin
...
FieldByName('GRADO').Value := DBLookupComboBoxGrado.KeyValue;
FieldByName('TANDA').Value := DBLookupComboBoxTanda.KeyValue;
...
end;


Saludos.

donpedro
29-11-2012, 22:37:02
muchas gracias ecfisa,,, les quite el datasource y el datafield y funciono a la perfeccion......gracias de veras.....
creo que esto se puede dar por caso cerrado.......