FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Un DBgrid cabezón
Hola.
Estoy haciendo mi primera aplicación medio en serio medio de prueba. Un Tpv. el problema que tengo es que selecciono un ticket, en un dbgrid muestro las lineas de detalle. Cuando inserto o modifico lineas estas no se refrescan aunque lance de nuevo la consulta que las muestra. Este es código: Código:
var s: string; begin DbGrid1.DataSource:=dm.T.Vacio; s:='SELECT CODIGO,DESCRIPCION, UNI, PVP, DTO,TOTAL,POS FROM LINTIK WHERE '+filtro; dm.t.DataSource1.DataSet.Close; dm.t.IBQuery1.Active:=FALSE; dm.t.IBQuery1.Close; 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; dm.t.IBQuery1.Active:=TRUE; DbGrid1.DataSource:=dm.T.DataSource1; dbGrid1.Refresh; ¿ como hacer para que se refresque ? P.D. he buscado en el foro, y no he encontrado en las primera 3 pag. nada. |
#2
|
||||
|
||||
Hola
Me parece que estas haciendo un escabeche. Para mi ya tienes la informacion y esta ligada al dbgrid. Con solo esto: Ya tiene que refrescar, cierras y abres, cual es el problema, no lo veo. Saludos
__________________
Siempre Novato |
#3
|
|||
|
|||
Pues que no se refrescan las lineas del dbgrid
fíjate en mi código: Código:
dm.T.IBTquery.Active:=false; dm.t.IBQuery1.SQL.Clear; dm.t.IBQuery1.SQL.Add(S); dm.T.IBTquery.Active:=true; He probado incluso a realizar un commit por si la transacción no se ha completado. |
#4
|
||||
|
||||
Hola
Para empezar el DBGrid no tiene nada que ver en esto, este es simplemente refleja lo que hay en el query, que es el importante, aqui. Modificando un poco esto, quedaria asi: Sigo sin entender, se cierra y se abre, el problema debe ser otro. Sigo pensando que generas codigo innecesario. Saludos
__________________
Siempre Novato |
#5
|
|||
|
|||
Cita:
No será que debes de ejecutar el query y no solo abrirlo?
Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#6
|
|||
|
|||
ExecSql no deja para una consulta "Select" dice que se use Open
No consigo que se refresquen las tablas. Caral Está todo como tu dices, y no se actualiza, ¿ qué otra cosa podría ser ¿Podrían ser las transacciones ? |
#7
|
|||
|
|||
Cita:
Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#8
|
|||
|
|||
Parece que se donde está el problema
Salud OS PD Perdón por la nota anterior, todo por no leer
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#9
|
||||
|
||||
Hola
Vamos por pasos, a ver si lo entiendo. Revisa estos puntos y me comentas. 1- tienes un dbgrid el que esta ligado a un query, este muestra la informacion que necesitas. 2- La informacion que presenta el query contiene el campo clave para actualizarse. 3- Editas el query o la tabla en algun sitio o paso que no veo en tu codigo. 4- Haces un post o guardas los datos. 5- quieres volver a ver el contenido, pero esta vez modificado. Si estas siguiendo estos pasos, no entiendo cual es el problema.. Saludos
__________________
Siempre Novato |
#10
|
|||
|
|||
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
__________________
Ernesto R. |
#11
|
|||
|
|||
Cita:
ya que arriba ya asignó el debgrid con ésta otra
Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#12
|
|||
|
|||
Perdón por no haber escrito antes. Estoy a caballo entre dos ciudades.
Os explico mejor los procesos:
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;
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; |
#13
|
||||
|
||||
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. |
#14
|
|||
|
|||
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; Y a Todos los que me han ayudado.. Muchas Gracias. |
|
|
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 |
|