RE:duda onChange combo dbgrid
el codigo es el siguiente (no incluyo las propiedades del dbgrid ni la tabla, pq creo que está correcto,no se):
//EL CAMPO QUE DESPLIEGA EL COMBO EN EL DBGRID
procedure Tdm_db.TDesgloseTrabcategoriaChange(Sender: TField);
var
cadSQL:String;
begin
if form1.DBGrid1.Columns.
if salarioCalculado then
begin
salarioCalculado:=false;
form1.ComboCOD_CATE.ItemIndex:=form1.CCATEGORIA1.Items.IndexOf(dm_db.TDesgloseTrab.fieldbyname('categoria').value);
//Aprovechamos el Q_CargarCombo para cargar el IMP_COSTESAL
form1.Q_CargarCombo.close;
form1.Q_CargarCombo.SQL.clear;
cadSQL:='SELECT c.imp_costesal, c.imp_seg_soc, c.imp_tot from spf_costessala c, municipi m WHERE'
+ ' C.ANNO_CONVENI=' + form1.ANNO_PFOEA.text
+ ' AND C.COD_CATE=' + form1.ComboCOD_CATE.text
+ ' AND C.DC_DT= M.TURNO_CONT'
+ ' AND M.COD_MUNI=' + form1.COD_MUNI.text;
form1.Q_CargarCombo.SQL.Add(CadSQL);
form1.Q_CargarCombo.Open;
form1.Q_CargarCombo.First;
if not form1.Q_CargarCombo.EOF then
begin
dm_db.TDesgloseTrab.fieldbyname('IMP_COSTESAL').value:=form1.Q_CargarCombo.FieldByName('IMP_COSTESAL').AsString;
dm_db.TDesgloseTrab.fieldbyname('IMP_SEG_SOC').value:=form1.Q_CargarCombo.FieldByName('IMP_SEG_SOC').AsString;
dm_db.TDesgloseTrab.fieldbyname('IMP_TOT').value:=form1.Q_CargarCombo.FieldByName('IMP_TOT').AsString;
if dm_db.TDesgloseTrab.fieldbyname('DURACION').value>0 then
begin
dm_db.TDesgloseTrab.fieldbyname('COSTE_TOT').value:=dm_db.TDesgloseTrab.fieldbyname('IMP_TOT').value * dm_db.TDesgloseTrab.fieldbyname('DURACION').value;
end;
end
else
begin
Showmessage('No existe importe salarial asociado.');
dm_db.TDesgloseTrab.fieldbyname('IMP_COSTESAL').value:='0';
dm_db.TDesgloseTrab.fieldbyname('IMP_SEG_SOC').value:='0';
dm_db.TDesgloseTrab.fieldbyname('IMP_TOT').value:='0';
//METER AQUI CÓDIGO DE CANCELAR EL PROCESO GLOBAL (SERÁ PARECIDO AL BOTON CANCELAR).
end;
end;
salarioCalculado:=false;
end;
//UNO DE LOS CAMPOS
procedure Tdm_db.TDesgloseTrabN_TRABAJChange(Sender: TField);
begin
if (dm_db.TDesgloseTrab.fieldbyname('N_TRABAJ').value=0) OR (dm_db.TDesgloseTrab.fieldbyname('N_TRABAJ').asstring='') then
begin
form1.ComboCOD_CATE.ItemIndex:=2;
TDesgloseTrab.fieldbyname('categoria').value:=form1.CCATEGORIA1.Items.IndexOf('2');
end;
end;
Gracias de nuevo.