Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 02-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
El problema es que no se actualizan las tablas y no se porque !!
Responder Con Cita
  #22  
Antiguo 02-05-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Cita:
Empezado por pelikno Ver Mensaje
Porque usas querys?
Simplemente porque no es recomendable ni necesario en cualquier sistema que se muestren todos los registros. Es decir, cuando un usuario busca algo en particular sabe lo que necesita ver y nosotros debemos darle mas o menos la estructura de busqueda para que no se nos dispare la memoria del programa. Imaginate si la tabla tiene un millon de registros por ejemplo. Entonces solo limito lo que quiero mostrar.
Por otro lado las consultas se ejecutan en el servidor y enviar todos (y digo todos) los datos por red puede ser demasiado engorroso y saturar todo facilmente. Por ello mis consultas son del tipo

Código Delphi [-]
   IbQuery1.close;
   IbQuery1.Sql.Clear;
   IbQuery1.Sql.Add(Select Apellido,Nombres,DNI,Direccion From Clientes);
   IbQuery1.Sql.Add(Where apellido = 'Perez')
   ibQuery1.Sql.Open;
Donde solo traera los Perez
y si quiero editar un registro, primero lo busco y solo traigo el que me interesa

Mas o menos es así

En cuanto a las tablas si cerras y volves a abrir los cambios estan tiene que ser tema de refresco pero ahi como ya te dije mucho no se.
Responder Con Cita
  #23  
Antiguo 02-05-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por pelikno Ver Mensaje
El problema es que no se actualizan las tablas y no se porque !!
Veamos:
Terminal 1: abres la ficha de artículos, buscas el artículo 'A001' y lo tienes en pantalla.
Terminal 2: abres la ficha de artículos, buscas el artículo 'A001' y lo tienes en pantalla.

En el terminal 1 modificas el precio del artículo. Haces 'post' y 'commitretaining'.
En el terminal 2 sigues viendo la pantalla con el precio anterior, si vuelves a buscar el mismo artículo entonces te aparecerá con el nuevo precio.
¿Es eso?
Responder Con Cita
  #24  
Antiguo 02-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Cita:
Empezado por MartinS Ver Mensaje
Simplemente porque no es recomendable ni necesario en cualquier sistema que se muestren todos los registros. Es decir, cuando un usuario busca algo en particular sabe lo que necesita ver y nosotros debemos darle mas o menos la estructura de busqueda para que no se nos dispare la memoria del programa. Imaginate si la tabla tiene un millon de registros por ejemplo. Entonces solo limito lo que quiero mostrar.
Por otro lado las consultas se ejecutan en el servidor y enviar todos (y digo todos) los datos por red puede ser demasiado engorroso y saturar todo facilmente. Por ello mis consultas son del tipo

Código Delphi [-]
   IbQuery1.close;
   IbQuery1.Sql.Clear;
   IbQuery1.Sql.Add(Select Apellido,Nombres,DNI,Direccion From Clientes);
   IbQuery1.Sql.Add(Where apellido = 'Perez')
   ibQuery1.Sql.Open;
Donde solo traera los Perez
y si quiero editar un registro, primero lo busco y solo traigo el que me interesa

Mas o menos es así

En cuanto a las tablas si cerras y volves a abrir los cambios estan tiene que ser tema de refresco pero ahi como ya te dije mucho no se.
Entiendo lo que pasa que ente caso la tabla de localidades para dar de alta un inmueble por lo tanto tiene que estar todas porque no se sabe a priori cual es la correcta.
Me podrías decir de las opciones del transaction cual seria la correcta en este caso para cuando realizo un cambio que no espere para hacer commit y se realice al instante ?
Responder Con Cita
  #25  
Antiguo 02-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Veamos:
Terminal 1: abres la ficha de artículos, buscas el artículo 'A001' y lo tienes en pantalla.
Terminal 2: abres la ficha de artículos, buscas el artículo 'A001' y lo tienes en pantalla.

En el terminal 1 modificas el precio del artículo. Haces 'post' y 'commitretaining'.
En el terminal 2 sigues viendo la pantalla con el precio anterior, si vuelves a buscar el mismo artículo entonces te aparecerá con el nuevo precio.
¿Es eso?
Todo correcto excepto que para ver el nuevo precio en la terminal 2 tengo que cerrar mi aplicacion y volver a ejecutar y ahi si me muestra actualizada la base, como que se tiene que desconectar para poder actualizar la tabla no se porque
Responder Con Cita
  #26  
Antiguo 02-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
ademas la base si se actualiza porque por ejemplo
-terminal 1 agrego la localida con codigo 2 la grilla muestra
cod nombre
1 loc1
2 loc2


-la terminal 2 muestra o sea no se actualizo
cod nombre
1 loc1

-la terminal 2 intento agregar localidad con codigo 2 me tira error de primarykey o sea que si se agrego en la base pero la tabla no lo refleja
Responder Con Cita
  #27  
Antiguo 02-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Código Delphi [-]
procedure TForm1.localidadesAfterPost(DataSet: TDataSet);
begin

CustomerData.IBTransaction1.CommitRetaining;
CustomerData.ibdatabase.ApplyUpdates([localidades]);
localidades.ApplyUpdates;
localidades.Active:=false;
localidades.Active:=true; 
localidades.Refresh;


end;

Estado de mi transaction
active = true
defaultaction =tacommit
defauldatabase = ibdatabase
Idletimer = 0
name =ibtransaction
params = read_committed
rec_version
nowait
tag = 0

estado de mi base de datos
connected= true
databasename = 192.168.1.226:C:\Documents and Settings\virtualbox\Escritorio\misistema\mibase.FDB
defaultransaction = IBTransaction
Idletimer = 0
loginpromt = false
name = ibdatabase
params = user_name=SYSDBA
password=masterkey
sql_role_name=3
lc_ctype=ISO8859_1
sqldialect = 3
tag = 0
traceflags = todas en false

----------------------------------
las ibtables tiene como database =CustomerData.ibdatabase y no se de alguna propiedad que tenga que modificar para que se actualice como tiene la componenete tquery la propiedad requestlive.
Responder Con Cita
  #28  
Antiguo 02-05-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
A ver vamos por parte dijo JACK

Yo para los datos uso un TDataModule y este el procedimiento cuando se crea (pone en uses IniFiles)


Código Delphi [-]
procedure TDm.DataModuleCreate(Sender: TObject);
Var BaseDeDatos: String;
    IniFile: TIniFile;
begin
   // Obtiene la ruta y el nombre de la base de datos
   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'BDatos.ini');
   BasedeDatos := IniFile.ReadString('BD','Path','');
   If BasedeDatos = '' then
    ShowMessage('Error al cargar Base de Datos') else
    BaseGeneral.DatabaseName := BaseDeDatos;
end;

Lo que hace es leer un archivo .ini que se encuentra en el mismo directorio del ejecutable tomando la ruta de la base de datos

Dentro del .ini (BDatos.ini) tiene solo esto (Cliente/servidor):

[BD]
Path=":C:\Desarrollos\RegistroGeneral\MASTERBASE.FDB"

y en la maquina cliente por decirlo de alguna manera tengo en un directorio la copia del ejecutable pero el ini de esa maquina dice esto:

[BD]
Path="10.151.129.138:C:\Desarrollos\RegistroGeneral\MASTERBASE.FDB"

donde esa IP es donde esta la Base de datos.

Resumiendo tengo dos ejecutables, uno en el cliente/servidor y otro en el cliente pero con diferente Ini. No se si me explico.-
Proba algo similar
Responder Con Cita
  #29  
Antiguo 02-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Cita:
Empezado por MartinS Ver Mensaje
A ver vamos por parte dijo JACK

Yo para los datos uso un TDataModule y este el procedimiento cuando se crea (pone en uses IniFiles)


Código Delphi [-]
procedure TDm.DataModuleCreate(Sender: TObject);
Var BaseDeDatos: String;
    IniFile: TIniFile;
begin
   // Obtiene la ruta y el nombre de la base de datos
   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'BDatos.ini');
   BasedeDatos := IniFile.ReadString('BD','Path','');
   If BasedeDatos = '' then
    ShowMessage('Error al cargar Base de Datos') else
    BaseGeneral.DatabaseName := BaseDeDatos;
end;

Lo que hace es leer un archivo .ini que se encuentra en el mismo directorio del ejecutable tomando la ruta de la base de datos

Dentro del .ini (BDatos.ini) tiene solo esto (Cliente/servidor):

[BD]
Path=":C:\Desarrollos\RegistroGeneral\MASTERBASE.FDB"

y en la maquina cliente por decirlo de alguna manera tengo en un directorio la copia del ejecutable pero el ini de esa maquina dice esto:

[BD]
Path="10.151.129.138:C:\Desarrollos\RegistroGeneral\MASTERBASE.FDB"

donde esa IP es donde esta la Base de datos.

Resumiendo tengo dos ejecutables, uno en el cliente/servidor y otro en el cliente pero con diferente Ini. No se si me explico.-
Proba algo similar
Si probe copiar el ejecutable en el escritorio de la terminal y le coloque a la base de datos la ip del servidor, si no me equivoco es lo mismo que hiciste vos nada mas que no tomo la ip de un archivo. y no me actualiza cuando agrego algo me tira error de primary key
Responder Con Cita
  #30  
Antiguo 02-05-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Cita:
Empezado por pelikno Ver Mensaje
Código Delphi [-]
procedure TForm1.localidadesAfterPost(DataSet: TDataSet);
begin

CustomerData.IBTransaction1.CommitRetaining;
CustomerData.ibdatabase.ApplyUpdates([localidades]);
localidades.ApplyUpdates;
localidades.Active:=false;
localidades.Active:=true; 
localidades.Refresh;


end;
El commitRetaining va despues del applyupdates.
Responder Con Cita
  #31  
Antiguo 02-05-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Cita:
Empezado por pelikno Ver Mensaje
Si probe copiar el ejecutable en el escritorio de la terminal y le coloque a la base de datos la ip del servidor, si no me equivoco es lo mismo que hiciste vos nada mas que no tomo la ip de un archivo. y no me actualiza cuando agrego algo me tira error de primary key
¿Y como hiciste eso? Por codigo?.. no entiendo?
Responder Con Cita
  #32  
Antiguo 02-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Cita:
Empezado por MartinS Ver Mensaje
¿Y como hiciste eso? Por codigo?.. no entiendo?
en la configuracion de la base le puse directamente la ip del servidor de mi aplicacion o sea 192.168.1.226, cuando se ejecuta en el servidor mi aplicacion es como la ip loopback porque se direcciona la base a la misma maquina, pero cuando se hace desde el cliente , la base apunta a la ip 192.168.226 cuando la localhost es 192.168.1.224 me explico ?
La ip de la base se la seteo directamente con 192.168.1.226:C:\Documents and Settings\virtualbox\Escritorio\misistema\mibase.FDB
Responder Con Cita
  #33  
Antiguo 02-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Cita:
Empezado por MartinS Ver Mensaje
El commitRetaining va despues del applyupdates.
No actualiza con ese cambio
Responder Con Cita
  #34  
Antiguo 02-05-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Si usas los componentes IBX, yo nunca usé eso de "applyupdates"

En el evento afterpost del dataset debes hacer el commit, algo así:

Código Delphi [-]
procedure TDMmain.QRcentrosCosteAfterPost(DataSet: TDataSet); 
begin 
  DataSet.Transaction.CommitRetaining; 
end;
Responder Con Cita
  #35  
Antiguo 02-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Si usas los componentes IBX, yo nunca usé eso de "applyupdates"

En el evento afterpost del dataset debes hacer el commit, algo así:

Código Delphi [-]
procedure TDMmain.QRcentrosCosteAfterPost(DataSet: TDataSet); 
begin 
  DataSet.Transaction.CommitRetaining; 
end;
CustomerData es mi datamodule
y esto es lo que esta en el evento afterpost de mi ibtable
Código Delphi [-]
CustomerData.ibtransaction.ApplyUpdates;
Localidades.refresh;

sigue haciendo lo mismo, es como si desde la base de datos no les mande el aviso que se modificaron los datos y se vuelva a mostrar en la grilla, doy de alta una localidad con codigo 4 en una terminal y en la otra no la veo hasta que no cierro la aplicacion y la vuelvo abrir
Responder Con Cita
  #36  
Antiguo 02-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Sera problema de delphi 5 y las componentes interbase ?
Voy a ver si puedo compilar con delphi 10 a ver que pasa porque es algo muy simple lo que quiero hacer y no se que pasa que no anda y me estoy volviendo loco.
Responder Con Cita
  #37  
Antiguo 02-05-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por pelikno Ver Mensaje
Sera problema de delphi 5 y las componentes interbase ?
No, no es problema de delphi ni de los componentes, es problema de las confirmaciones de transacciones, ya te lo hemos repetido constantemente un montón de veces

¿Pero has probado lo que te hemos comentado?
Responder Con Cita
  #38  
Antiguo 02-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No, no es problema de delphi ni de los componentes, es problema de las confirmaciones de transacciones, ya te lo hemos repetido constantemente un montón de veces

¿Pero has probado lo que te hemos comentado?
si si probe todo, fijate en los post anteriores que puse el codigo exactamente como lo tengo en el delphi ademas de la configuracion de las componentes.
Responder Con Cita
  #39  
Antiguo 02-05-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por pelikno Ver Mensaje
si si probe todo,
¿Y qué resultados has obtenido?, ¿bien?, ¿algún mensaje?, ¿cómo has hecho la prueba?, ¿con qué código?...
Responder Con Cita
  #40  
Antiguo 02-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Y qué resultados has obtenido?, ¿bien?, ¿algún mensaje?, ¿cómo has hecho la prueba?, ¿con qué código?...
ningun resultado hace lo mismo, o me actualiza, ahora estoy tratanto de compilar con delphi 2010 a ver si cambia pero no me conecta a la base remota estoy fijandome porque
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
Diseño de Sistema magnu9 Varios 14 16-10-2007 05:27:53
Consulta con diseño de BD Petolansa Varios 7 11-08-2007 02:30:01
en diseño web miamuxi Conexión con bases de datos 6 19-01-2007 20:13:50
Diseño pepelu1975 Varios 1 31-05-2004 09:55:36
duda en el diseño wonder boy SQL 3 31-03-2004 19:55:06


La franja horaria es GMT +2. Ahora son las 22:13:38.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi