PDA

Ver la Versión Completa : problemas con sql


jhonnyone1
27-05-2008, 21:05:40
hola q tal

mmm lo que estoy haciendo es listar en un dbcombobox(items) la columna de una tabla osea en el dbcombobox en el datafield pongo la columna que quiero listar ahora lo que quiero hacer es que cundo yo elija una de los items me rellene los datos relacionados en un edit (por ejemplo si elijo madrea en otro edit me ponga $45, y si pongo aluminio en otro edit me ponga $56)
ya intente muchas cosa pero no me funciona

desde ya muchas gracias............

betto
27-05-2008, 21:39:53
por que no pruebas llenar un combobox manualmente y cada vez que ocurra el evento OnChange lanzas un Query que te busque la info que requieres y la pones MANUALMENTE en el edit...
Sé que es algo primitivo el hacer las cosas manualmente pero a mi me da excelentes resultados en este tipo de cosas.

Suerte, saludos!

jhonnyone1
27-05-2008, 22:58:52
Si es asi pero tengo un problemita que cundo voy ah elminar con sql no lo elimina eso tambein debaria hacerl manualmente oase no se borra de los items cada vez que elimino de la base de datos nos e si me entienden
pero no podria tener otra soluciones mas sencilla y ademas como hago para hacerlo manuelmente osea que me ingrese en el edit con una consulta sql lo que elegi en el dbcombobox me lo rellene automaticamnete cundo lo elijo la opcin del combo como podria hacerlo puieden mandarme el codigo para giarme ok

betto
27-05-2008, 23:50:49
yo lo hago de la siguiente manera, espero te sirva:

cargo las listas con una funcion:

cargaPacientes(cbNombres); // aqui mando cargar en el combo los nombres de los pacientes por ejemplo

y la funcion es algo parecido a esto:

Procedure CargaPacientes(Pacientes: TComboBox);
begin
sql:='Select id_paciente as ID, nombres || '' '' || paterno || '' '' || materno as Nombre'+
' From SS_C_PACIENTE Where fecha_baja is null order by 1';
EjecutaSQL(md.ADOQuery,sql,true);
Pacientes.Clear;
while not md.ADOQuery.Eof do
begin
Pacientes.Add(md.ADOQuery.FieldByName('Nombre').AsString,
md.ADOQuery.FieldByName('ID').AsString); // aqui tienes que cambiar algo para que jale
md.ADOQuery.Next;
end;
end;


luego cuando cambio de paciente hago lo siguiente:
sql:='select Importe_Sesion '+
' from SS_C_EMPLEADO_IMPORTE_PAGO IP '+
' join SS_C_EMPLEADO E on (IP.ID_EMPLEADO=E.ID_EMPLEADO) '+
' join SS_C_PACIENTE P on (P.ID_TERAPEUTA=E.ID_EMPLEADO) '+
' where P.ID_PACIENTE='+ cbNombres.CurrentID; // aqui tienes que modifica pa que te jale
EjecutaSQL(md.ADOQuery,sql,true); // en lugar de asignar todos los valores hice una funcionsita
if not md.ADOQuery.Eof then
begin
edImporte.Text:= md.ADOQuery.FieldByName('Importe_Sesion').AsString;
MontoTerapia:= md.ADOQuery.FieldByName('Importe_Sesion').AsInteger;
end
else
edImporte.Text:='';



Y asi todo queda de forma manual y cuando por ejemplo ELIMINAS un registro vuelves a mandar a traer a la primer funcion cargaPacientes(cbNombres);
y primero limpia el combobox y luego carga los pacientes, de esa forma YA NO VERAS INFORMACION ELIMINADA.

te repito es como yo lo hago, no se si te sirva, espero que si, saludos!!!

:)

jhonnyone1
27-05-2008, 23:59:55
voy ha probar pero muchisimas gracais de todas formas

betto
30-05-2008, 03:52:05
como te fue? ya quedo?

jhonnyone1
30-05-2008, 21:12:42
mira no e tenido tiempo para poder probarlo por el trabajo pero por lo que vi en el codigo me va ah servir el tema es q puede haber alguna manera sin usar funciones osea solo asignando alguna consulta(sql) al edit en alguno de los eventos ONchange o lago asi puede ser?


Desde ya muchas gracias por todo cuando pruebe te digo pero como te dije por lo que vi en el codigo seguro me surve muchas gracias