Club Delphi  
    Paypal   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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-08-2007
Dado de baja Dado de baja is offline
Miembro
 
Registrado: ago 2007
Posts: 140
Poder: 19
Dado de baja Va por buen camino
Perdón por no haber escrito antes. Estoy a caballo entre dos ciudades.

Os explico mejor los procesos:
  1. Recupero o creo un ticket nuevo. El procedimiento verLineas, me muestra las lineas actuales. (Por ahora todo bien).
  2. Si es un ticket nuevo, agrego un artículo a vender. es decir una linea nueva. O modifico una linea ya existente:
Código:
  Asql.Limpia;
  asql.asigna('CODIGO',Acod.Text);
  asql.asigna('DESCRIPCION',Ades.Text);
  asql.asigna('PVP',Apvp.Text);
  asql.asigna('DTO',Adto.Text);
  asql.asigna('NFACT',IntToStr(i));
  asql.asigna('CAJA',dm.T.Caja);
  asql.asigna('IVA','16');
  asql.asigna('CLIENTE',Edit4.Text);
  asql.asigna('FECHA',dm.T.IbFecha);
  asql.asigna('ALMACEN',dm.T.ALmacen);
  asql.asigna('EJERCICIO',dm.T.ejercicio);
  asql.asigna('ECODIGO',dm.T.ecodigo);

 if mpos.Text='' then  // Si es una linea nueva.
  s:=ASQL.carga('LINTIK')
 else
  begin // Es una modificación.
    asql.Clausula:=' POS='+mPOS.Text;
    s:=ASQL.cargaModif('LINTIK');
    mpos.Text:='';
  end;
   DM.T.IBSQL1.SQL.Clear;
    DM.T.IBSQL1.SQL.Add(s);
    DM.T.IBSQL1.ExecQuery;
    DM.T.IBSQL1.Close;


  s:='update lintik ';
  s:=s+'set parcial_l=uni*pvp, ';
  s:=s+'imp_dto=((parcial_l*dto)/100), ';
  s:=s+'base=parcial_l-imp_dto, ';
  s:=s+'cuota=((base*iva)/100), ';
  s:=s+'total=base-cuota';
  s:=s+' where '+filtro;

  dm.T.IBSQL1.Close;
  dm.T.IBSQL1.SQL.Clear;
  dm.t.IBSQL1.SQL.Add(s);
  dm.T.IBSQL1.ExecQuery;
  dm.T.IBSQL1.Close;

  VerLineas;
  • He puesto el código que agrega o modifica lineas. Como veis todo es por SQL.
  • Tras las modificaciones o inserciones, llamo a VerLineas que es el responsable de actualizar el DBGrid. Pero no se actualiza.
  • No le hagais caso al objeto Asql, es una unidad que diseñe para crear de forma cómoda los insert o los updates. El metodo carga o cargamodif solo retorna la sentencia SQL en funcion de los campos asignados. Esto funciona.
  • Algo significativo es que solo se ver las modificiaciones cuando cierro y abro la aplicación.
Código:
Procedure TForm1.VerLineas;
var
  s: string;
begin
 s:='SELECT CODIGO,DESCRIPCION, UNI, PVP, DTO,TOTAL,POS FROM LINTIK WHERE '+filtro;
 dm.T.IBTquery.Active:=false;
 dm.t.IBQuery1.SQL.Clear;
 dm.t.IBQuery1.SQL.Add(S);
 dm.T.IBTquery.Active:=true;
 dm.T.IBQuery1.Open;
// dbGrid1.Refresh;
// totales;
end;
__________________
Saludos Cordiales.
------------------
Responder Con Cita
  #2  
Antiguo 24-08-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Dos cosas:
1: Que contiene filtro, que es?
2: Esto es reiterativo o es una u otra, para que las dos:
o es un error de escritura o tienes dos query?
Código Delphi [-]dm.T.IBTquery.Active:=true;
dm.T.IBQuery1.Open;


Me explicas el punto 1?
Saludos
__________________
Siempre Novato

Última edición por Caral fecha: 24-08-2007 a las 18:44:32.
Responder Con Cita
  #3  
Antiguo 26-08-2007
Dado de baja Dado de baja is offline
Miembro
 
Registrado: ago 2007
Posts: 140
Poder: 19
Dado de baja Va por buen camino
Perdon por la tardanza.

Al final he conseguido solucionarlo.

Tras enviar la consulta SQL realizo un commit de la transacción.

El código completo sería este:
Código:
    DM.T.IBSQL1.SQL.Clear;
    DM.T.IBSQL1.SQL.Add(s);
    DM.T.IBSQL1.ExecQuery;
    DM.T.IBSQL1.Transaction.commit; // esta es la solución
    DM.T.IBSQL1.Close;
Por si puede servirle a alguien.

Y a Todos los que me han ayudado.. Muchas Gracias.
__________________
Saludos Cordiales.
------------------
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
PickList DBGrid (Pregunta acerca de los DBGRID) lazarous Varios 1 10-01-2006 09:53:12
Como extraer datos de un DBgrid a otro DBgrid mickey Conexión con bases de datos 13 29-01-2004 05:05:30


La franja horaria es GMT +2. Ahora son las 05:28:43.


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