Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 03-07-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
No das informacion suficiente. No sabemos que son todos los componentes de acceso a datos que estas usando: qFecha, qVentas, etc. Sobre estos componenes invocas al metodo Open y no sabemos si estaras ejecutando un SQL

Ademas, tu codigo tiene varios problemas. En ningun lado chequeas por errores; el resumen es:

Código Delphi [-]
  Conexion.StartTransaction;
  try
    codigo 
  finally
    Conexion.Commit;
  end;

Eso es un problema grave porque si se graba algun dato (ocurre un .Post) y luego mas adelante se produce un error (sobre todo con tanta conversion de string a otro tipo), se ejecuta el bloque finally, es decir, se ejecuta el Commit y te queda la informacion a medias (inconsistente)

Te sugiero que lo hagas de esta manera:

Código Delphi [-]
  Conexion.StartTransaction;
  try
    codigo 

    fin del codigo
    Connection.Commit;
  except
    Conexion.Rollback;
  end;


Por otra parte, el codigo es muy complicado de leer: with entre 2 o 3 objetos, luego otro with anidado. Es imposible saber que objeto recibe los mensajes

Ademas, el modo que usas para asignar los valores a cada campo es peligroso, ya que estas asignando a un Variant

Código Delphi [-]
  fmodulo.qVentas['idcliente']

Cuando en realidad el Variant se deberia usar si "no se el tipo del dato", pero aca los conoces perfectamente por lo que va a ser mas seguro, rapido y facil de entender si lo cambias por esto:

Código Delphi [-]
  fmodulo.qVentas.FieldByName('idcliente').AsInteger := VariableInteger;
 
  ...
  fmodulo.qVentas.FieldByName('algun_campo').AsString := VariableString;
  fmodulo.qVentas.FieldByName('algun_campo').AsFloat := VariableSingle/Double/Extended;
  fmodulo.qVentas.FieldByName('algun_campo').AsCurrency := VariableCurrency;
  
  etc
  ...
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
Guardar usando store procedure ronimaxh SQL 5 02-12-2011 23:07:24
No muestra datos en TStringGrid Ziara C++ Builder 2 20-01-2009 17:23:25
Guardar Solo Hora usando DateTimePicker georgejg Conexión con bases de datos 6 23-03-2008 10:12:29
Introducir datos en un TStringGrid Bauhaus1975 Varios 3 11-05-2006 18:29:23
Prolema con Register en Interbase esocrates Firebird e Interbase 6 10-04-2004 22:31:47


La franja horaria es GMT +2. Ahora son las 20:49:05.


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