Hola a todos y gracias de antemano por vuestra ayuda.
Me toca preguntar, esto ya me tiene loco, a ver que podeis hacer por mi.
Tengo que realizar una consulta a varias tablas a un campo en comun, NumRecibo.
Lo que hago es:
Primero Hago la consulta a las tablas asi:
Código Delphi
[-]OrdenCompra.Active := False;
OrdenCompra.SQL.Text := 'Select OrdenCompra From OrdenProd WHERE OrdenCompra ='+QuotedStr(Edit7.Text);
OrdenCompra.Active := True;
ReciboOrden.Active := False;
ReciboOrden.SQL.Text := 'Select NumRecibo From OrdenProd WHERE NumRecibo ='+Edit10.Text;
ReciboOrden.Active := True;
BN.Active := False;
BN.SQL.Text := 'Select NumRecibo From BancoNac WHERE NumRecibo ='+Edit10.Text;
BN.Active := True;
BSJC.Active := False;
BSJC.SQL.Text := 'Select NumRecibo From BancoSanJoseco WHERE NumRecibo ='+Edit10.Text;
BSJC.Active := True;
BSJD.Active := False;
BSJD.SQL.Text := 'Select NumRecibo From BancoSanJosedol WHERE NumRecibo ='+Edit10.Text;
BSJD.Active := True;
Verifico que la orden y el numero de recibo no esten repetidos en la tabla ordenes (esto lo hace bien) .
Luego reviso las tablas de los bancos para ver en que banco esta el recibo, (esto lo hace bien.)
Ahora reviso y comparo asi:
Código Delphi
[-]If Edit7.Text = '' then Edit7.Text:= Edit2.Text else If Edit10.Text = ReciboOrden.Fields[0].AsString then MessageDlg('Este recibo ya se uso en otra orden',mtError,[mbOK],0)
else If Edit7.Text = OrdenCompra.Fields[0].Value then MessageDlg('La orden de Compra ya Existe',mtError,[mbOK],0)
else If Edit9.Text = 'Contado' then begin If Edit10.Text = BN.Fields[0].AsString then begin ShowMessage('esta en el banco nacional');
end;
If Edit10.Text = BSJC.Fields[0].AsString then begin ShowMessage('esta en el banco San Jose Colones');
end;
If Edit10.Text = BSJD.Fields[0].AsString then begin ShowMessage('esta en el banco San Jose dolares');
end else MessageDlg('El recibo no esta en ningun banco, REVISE',mtError,[mbOK],0)
end else
Y luego grabo los datos si cumple con la condicion asi:
Código Delphi [-]MessageDlg('El recibo no esta en ningun banco, REVISE',mtError,[mbOK],0)
end else If Edit3.Text = '' then MessageDlg('Debe especificar el código del cliente',mtError,[mbOK],0)
else begin ShortDateFormat := 'dd/mm/yyyy';
DataModule1.AC1.BeginTrans;
try If Nueva then QTemp.SQL.Text := 'Insert Into OrdenProd (Codorden, FechaInicio, FechaRequerido, CodUsuario, Comentarios, CodCliente, Prioridad, Enrutada, OrdenCompra, NumRecibo) '+
'Values (' +Edit2.Text+', '+QuotedStr(Edit4.Text)+', '+QuotedStr(DateToStr(DateTimePicker1.DateTime))+', '+
QuotedStr(Edit5.Text)+', '+QuotedStr(Memo1.Text)+', '+Edit3.Text+', '+IntEdit1.Text+', True, '+QuotedStr(Edit7.Text)+', '+QuotedStr(Edit10.Text)+')' else QTemp.SQL.Text := 'Update OrdenProd set FechaRequerido = '+QuotedStr(DateToStr(DateTimePicker1.DateTime))+', Comentarios = ' +QuotedStr(Memo1.Text)+', CodCliente = '+Edit3.Text+', Prioridad = '+IntEdit1.Text+
' Where CodOrden = '+Edit2.Text;
QTemp.ExecSQL;
guardada := true;
IF Nueva then begin QOrdProd.Requery(); QOrdProd.Last; end else begin bok := QOrdProd.Bookmark; QOrdProd.Requery(); QOrdProd.Bookmark := bok; end;
DataModule1.AC1.CommitTrans;
If Nueva then If MessageDlg('Orden Guardada.'+#13+'¿Desea agregar items a la orden?',mtConfirmation,[mbYes,mbNo],0) = mrYes then Nueva := False; QOrdProd.Close; QOrdProd.Open; TabSheet3.Show; except on E:Exception do DataModule1.AC1.RollbackTrans;
end; end;
end;
Si juntan todo el codigo, hace un solo evento en un boton.
Bueno el asunto es que no me funciona.
encuentra el recibo, pero si esta no continua la ejecucion, se para ahi, si no lo encuentra si lo graba.
Hay que tener en cuenta que tiene que cumplir una condicion adicional, que el cliente sea de Contado, en esta seccion es donde me da los problemas.
Por favor ayudais al novato

Saludos