Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-10-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Consulta con 4 tablas

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;//try
   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

Última edición por marcoszorrilla fecha: 15-10-2007 a las 19:38:23.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
consulta de varias tablas elprimo Tablas planas 3 03-01-2007 10:23:15
Consulta SQL con dos tablas... emeceuy Conexión con bases de datos 2 06-08-2005 07:41:59
consulta de dos tablas tgsistemas SQL 4 15-04-2005 13:25:59
Consulta con dos tablas candido SQL 2 09-08-2004 13:02:07
Consulta SQL con 4 tablas nefy SQL 2 03-05-2004 23:25:22


La franja horaria es GMT +2. Ahora son las 18:16:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi