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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-08-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por ramiretor Ver Mensaje
Hola:
El problema para que veas los datos es que necesitas dejarlos en la base de datos y no en el cliente, como te dicen, editas los datos y los guardas pero solo en el cliente, necesitas hacer un commit en la base de datos, y ahora sí los podrás ver

Saludos a todos
Ciertamente se requiere de hacer el commit para que los datos queden en la base, solo que no es un insert, es un select (cometí el mismo error no se preocupen) el problema que veo yo, como ya lo postee es que está redireccionando el DBGrid antes del refresh, solo hay que borrar ésta línea.

Código Delphi [-]
 
DbGrid1.DataSource:=dm.T.DataSource1;

ya que arriba ya asignó el debgrid con ésta otra

Código Delphi [-]
DbGrid1.DataSource:=dm.T.Vacio;

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #2  
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
  #3  
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
  #4  
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



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 01:13:10.


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