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
  #21  
Antiguo 04-08-2014
giulichajari giulichajari is offline
Miembro
 
Registrado: nov 2012
Posts: 306
Poder: 12
giulichajari Va por buen camino
Bueno encontre un problema en la aplicacion que puede estar relacionado, esto se debe a que tnego poca experiencia.

Sucede que el formulario de ticket tiene un boton de agregar producto que lleva a otro form con la lista de productos. Ademas contiene un dataset para poder "traer" el producto, y tener algunos campos calculables como totales y demas, pero me inserta en la tabla productos un registro. Pienso que por ahi va la cosa...

En el boton Agregar del form agregar producto:

Código Delphi [-]
begin
   if (GrillaProd.SelectedRows.Count=1) then
    begin
      ShowMessage('seleccione al menos un producto');
    end
    else
      if (Edit3.Text='') then
          begin
            ShowMessage('Especifique la cantidad a vender');
          end

      else
    begin
    //obtengo idprod para llenar ticket
      Form3.ZQuery1.ParamByName('idp').AsInteger:=GrillaProd.DataSource.DataSet.FieldByName('idproducto').  AsInteger;
        with Form3.ClientDataSet1 do
          begin
            Open;
            Insert;
            FieldByName('cantidad').AsFloat:=StrToFloat(Edit3.Text);
            FieldByName('nombre').AsString:=ZQuery1.FieldByName('nombre').AsString;

            FieldByName('preciou').AsFloat:=ZQuery1.FieldByName('preciou').AsFloat;
            FieldByName('total').AsFloat:=((StrToFloat(Edit3.Text)) * (ZQuery1.FieldByName('preciou').AsFloat));

            if State in [dsEdit,dsInsert] then
              Post;
            if ChangeCount>0 then
              begin
                ApplyUpdates(0);

              end;

        end;
         Form3.StringGrid1.Cells[1,0]:=Form3.ClientDataSet1.FieldByName('totalticket').AsString;
       end;
end;

Creo que corrigiendo esto va a andar, porque para que funcione el HACER TICKET del form de ticket tiene que estar bien seteada la grilla.
Responder Con Cita
  #22  
Antiguo 09-08-2014
giulichajari giulichajari is offline
Miembro
 
Registrado: nov 2012
Posts: 306
Poder: 12
giulichajari Va por buen camino
Hola de vuelta, bueno probe comentar la linea de numero del lado del servidor

Código Delphi [-]
    procedure Tsucursales.hacerticket(ticket:Tticket);

    begin
      consultas:=Tsucursallaferretera.Create(nil);
      with consultas.queryticket do
        begin


         // ParamByName('numero').AsInteger:=ticket.numero;

          ParamByName('importe').AsFloat:=ticket.importe;
          ParamByName('fechae').AsString:=ticket.fechae;
          ParamByName('horae').AsString:=ticket.horae;
                ParamByName('idsucursal').AsInteger:=ticket.idsucursal;
                SQL.Add('insert into ticket(idticket,numero,importe,fechae,horae,idsucursal)');
          SQL.Add('values (null,:numero,:importe,:fechae,:horae,:idsucursal);');
           ExecSQL();

        end;
    end;

y obtuve

Error: data truncated for column importe at row 1, osea el problema esta en la insercion o probablemente en el id
Responder Con Cita
  #23  
Antiguo 10-08-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola giulichajari.

De nuevo estas llamando a los parámetros antes de ser declarados en la sentencia. Mas allá de cualquier otro error que pudiera existir, no va a funcionar de ese modo. Es más, me extraña que no te aparezca la excepción "Parameter 'xxxx' not found".
Siempre primero declara la consulta con sus parámetros y luego, una vez que existan, hace referencia a ellos.

También te aconsejo que te acostumbres a llamar al método Clear antes de invocar al método Add, eso limpiará cualquier residuo que pudiera haber quedado. Te vas a ahorrar dolores de cabeza con errores de sintáxis de SQL que no vas a saber de donde vienen...

Código Delphi [-]
procedure Tsucursales.hacerticket(ticket:Tticket);
begin
  consultas:=Tsucursallaferretera.Create(nil);
  with consultas.queryticket do
  begin
    SQL.Clear;
    SQL.Add('insert into ticket(idticket,numero,importe,fechae,horae,idsucursal)');
    SQL.Add('values (null,:numero,:importe,:fechae,:horae,:idsucursal);');

    // ParamByName('numero').AsInteger:=ticket.numero;
    ParamByName('idsucursal').AsInteger:=ticket.idsucursal;
    ParamByName('importe').AsFloat:=ticket.importe;
    ParamByName('fechae').AsString:=ticket.fechae;
    ParamByName('horae').AsString:=ticket.horae;
    ExecSQL();
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
!!error!! nob_blob column Ledwin_v Varios 2 16-08-2011 16:28:13
Error Column does not belong noe Firebird e Interbase 4 26-02-2010 10:22:01
Column unknown elcolo83 Conexión con bases de datos 5 04-04-2008 23:16:48
Error Delphi 3 Standard al crear Informe con + d una column jealousy Impresión 2 10-01-2005 18:58:36
Hide Column en un TListView DJ VMan OOP 0 05-12-2003 13:40:57


La franja horaria es GMT +2. Ahora son las 17:57:49.


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