Cita:
Empezado por AgustinOrtu
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
...
|
Hola disculpa no me exprese bien y me faltaron cosas por decir utilizo componentes Tquery de zeos en los cuales tengo uno de detalle y otro tquery de ventas en cada uno tengo una sentencia sql que es la siguiente
Código SQL
[-] Query venta
SELECT
`venta`.`idventa`,
`venta`.`totalventa`,
`venta`.`estadoventa`,
`venta`.`idcliente`,
`venta`.`fechavent`,
`venta`.`horavent`
FROM
`venta`
Código SQL
[-] Query detalle venta
SELECT
`detalle_venta`.`idventa`,
`detalle_venta`.`idproducto`,
`detalle_venta`.`cantidad_venta`,
`detalle_venta`.`precio_venta`,
`detalle_venta`.`estado_detalleventa`
FROM
`detalle_venta`
// en esta sentencia amigo me tira el siguiente error "Invalid operation in AutoCommit mode"
Connection.Commit;
except
Conexion.Rollback;
end;
Aun soy muy nuevo en esto soy estudiante, y ese es el codigo que me dijieron que utilize para trabajar con el TstringGrid me dijieron que debia hacer esas conversiones para guardar los datos.Por ejemplo si deberia guardar
Código Delphi
[-]fmodulo.qdetalle['idproducto']:= strtoint(sgDetalle.Cells[0,i]);
esta linea quedaria algo parecido a esto ?
Código Delphi
[-]fmodulo.qdetalle.FieldByName('idproducto').AsInteger:= strtoint(sgDetalle.Cells[0,i]);
gracias amigo por la respuesta y la ayuda