Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-07-2003
judoboy judoboy is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia
Posts: 139
Poder: 21
judoboy Va por buen camino
Porque me deja en blanco el DBGrid?

Hola me ocurre una cosa muy extraña.

Quiero insertar en una tabla los datos que aparecen en un DBGrid. Solo los seleccionados, estuve haciendo pruebas con una base de datos de hace unas dos semanas que estaba en el servidor y me funciona bien con el código que luego os pondre, sin embargo ahora al hacer la acción sobre la base de datos que esta ahora en el server me pasa lo siguiente, al hacer click sobre el botón me desaparecen todos los datos que estan en el DBGrid, y no lo entiendo, entonces pues no me realiza la inserción de los artículos seleccionados sino solo de uno.

Código:
{Mediante este procedimiento añadimos solo las lineas seleccionadas}
procedure TFrmImportarPedido.BtnAnyadirLineaClick(Sender: TObject);
var i:integer;
  Data:TDataSet;
  SentenciaSql3,SentenciaSql,SentenciaSqlStock,
SentenciaSqlStock2,SentenciaPendiente:string;
  pendiente:string;
begin


try




     SentenciaSql:='INSERT INTO ALBARAN (CODIGO, CODIGO_PEDIDO, FECHA, TOTAL, 
TOTAL_PEDIDO, PROVEEDOR) '+
   'VALUES (:CODIGO,:CODIGO_PEDIDO,:FECHA, :TOTAL, 
:TOTAL_PEDIDO, :PROVEEDOR)';
     ConsultasCombo.Sql.Clear;
      ConsultasCombo.Sql.Add(SentenciaSql);
   with ConsultasCombo do
begin
close;


unprepare;
parambyname('CODIGO').asstring := editcodigoalbaran.text;
parambyname('CODIGO_PEDIDO').asSTRING:=
ModuloDatos.TablePedidosCODIGO_PEDIDO.AsString;
parambyname('FECHA').AsDate:=now;
//parambyname('TOTAL').asFloat:=UModuloDatos.TL_P_ProvSUBTOTAL.Value;
//parambyname('TOTAL_PEDIDO').AsFloat:=
UModuloDatos.TL_P_ProvSUBTOTAL.Value;
parambyname('TOTAL').AsFloat:=
UModuloDatos.TablePedidosTOTALBRUTO.Value;
parambyname('TOTAL_PEDIDO').AsFloat:=
UModuloDatos.TablePedidosTOTALBRUTO.Value;
parambyname('PROVEEDOR').AsString:=
UModuloDatos.TablePedidosCODIGO_PROVEEDOR.AsString;
prepare;
execsql;

end;//ConsultasCombo


       {Ahora inserto el artículo seleccionado}
            if DBGLineasPedido.SelectedRows.Count<>0 then
                     with DBGLineasPedido.DataSource.DataSet do
                  for i:=0 to DBGLineasPedido.SelectedRows.Count-1 do

                BEGIN

    SentenciaSql3:=
'INSERT INTO LINEAS_ALBARAN_PROVEEDOR (CODIGO_ALBARAN, ARTICULO,CANTIDAD,
DESCUENTO,PRECIO_UNITARIO,
SUBTOTAL,PENDIENTE) '+
          ' VALUES (:CODIGO_ALBARAN, :ARTICULO,:CANTIDAD,
:DESCUENTO,:PRECIO_UNITARIO,:SUBTOTAL,:PENDIENTE)';
         QArticulos2.Sql.Clear;
         QArticulos2.Sql.Add(SentenciaSql3);
        with QArticulos2 do
        begin
        close;
        unprepare;

        parambyname('CODIGO_ALBARAN').AsString := editcodigoalbaran.text;
        parambyname('ARTICULO').AsString :=
 UModuloDatos.TL_P_ProvARTICULO.AsString;
        parambyname('CANTIDAD').ASFloat:=
UModuloDatos.TL_P_ProvCANTIDAD.AsFloat;
        parambyname('DESCUENTO').AsFloat:=

UModuloDatos.TL_P_ProvDESCUENTO.AsFloat;
        parambyname('PRECIO_UNITARIO').AsFloat:=

UModuloDatos.TL_P_ProvPRECIO_UNITARIO.AsFloat;
        parambyname('SUBTOTAL').AsFloat:=
UModuloDatos.TL_P_ProvSUBTOTAL.AsFloat;
        parambyname('PENDIENTE').AsFloat:=

UModuloDatos.TL_P_ProvPENDIENTE.AsFloat;
        prepare;
        execsql;
        end;//QArticulos2







         {Ahora actualizo los stocks}


                 //6 almacen 5 obra

        if ((DBGPedidos.Fields[6].AsString<>'') 
and (DBGPedidos.Fields[5].AsString='')) then
            begin
            {disminuimos el stock a recibir}
            SentenciaSqlStock:=
'UPDATE ARTICULOS SET STOCK_RECIBIR=
STOCK_RECIBIR-"'+UModuloDatos.TL_P_ProvCANTIDAD.AsString+'"
 WHERE CODIGO_ARTICULO="'+DBGLineasPedido.Fields[0].Value+'" ';
            {Aumentamos el stock almacen}
            SentenciaSqlStock2:='
UPDATE ARTICULOS SET STOCK=
STOCK+"'+UModuloDatos.TL_P_ProvCANTIDAD.AsString+'" 
WHERE CODIGO_ARTICULO="'+DBGLineasPedido.Fields[0].Value+'" ';
            end

        else   {Actualizamos el stock de obra}
            if ((DBGPedidos.Fields[6].AsString<>'')
 and (DBGPedidos.Fields[5].AsString<>'')) then
               begin
                {disminuimos el stock a recibir de obra}
                 SentenciaSqlStock:=
'UPDATE ARTICULOS SET STOCK_OBRA_RECIBIR=
STOCK_OBRA_RECIBIR-"'+UModuloDatos.TL_P_ProvCANTIDAD.AsString+'"
 WHERE CODIGO_ARTICULO="'+DBGLineasPedido.Fields[0].Value+'" ';
                {aumentamos el stock de obra}
                SentenciaSqlStock2:=
'UPDATE ARTICULOS SET STOCK_OBRA=STOCK_OBRA+"'
+UModuloDatos.TL_P_ProvCANTIDAD.AsString+'" 
WHERE CODIGO_ARTICULO="'+DBGLineasPedido.Fields[0].Value+'" ';
               end
             else {No actualiza si va directamente a Obra}

                 if ((DBGPedidos.Fields[6].AsString='') 
and (DBGPedidos.Fields[5].AsString<>'')) then
                    begin
                      UModuloDatos.Pedidos.DataSet.Filtered:=False;
                     ShowMessage('Se ha generado correctamente el albarán');
                       Exit;
                    end;




         QArticulos3.Close;
         QArticulos3.Sql.Clear;
         QArticulos3.Sql.Add(SentenciaSqlStock);
         QArticulos3.ExecSQL;

         QArticulos4.Close;
         QArticulos4.Sql.Clear;
         QArticulos4.Sql.Add(SentenciaSqlStock2);
         QArticulos4.ExecSQL;

          try
          {Actualizo el pendiente de los artículos}
          Pendiente:='0';
          SentenciaPendiente:=
'UPDATE LINEAS_PEDIDO_PROVEEDOR SET PENDIENTE="'+Pendiente+'"
 WHERE CODIGO_PEDIDO=
"'+DBGPedidos.Fields[0].AsString+'" '+
           ' AND ARTICULO="'+DBGLineasPedido.Fields[0].AsString+'"';
         QPendiente.Close;
         QPendiente.Sql.Clear;
         QPendiente.Sql.Add(SentenciaPendiente);
         QPendiente.ExecSQL;
           except
              ShowMessage
('No se ha podido actualizar la cantidad de PENDIENTE');
           end;




              GotoBookmark
(pointer(DBGLineasPedido.SelectedRows.Items[i]));//Vuelvo para insertar
                                          //el sig. artículo

          END;














       UModuloDatos.L_P_Prov.DataSet.Filtered:=False;
       ShowMessage('Se ha generado el Albarán');


  except
     ShowMessage('No se ha podido realizar la inserción');

  end;

end;
{*******************************************************************************}
Responder Con Cita
  #2  
Antiguo 03-07-2003
judoboy judoboy is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia
Posts: 139
Poder: 21
judoboy Va por buen camino
Ya he encontrado el fallo, era el que se generaba si los articulos van directamente a obra.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 14:57:50.


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