Club Delphi  
    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 09-02-2006
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Question Al volver al entrar en la aplicación me sale el ultimo Registro Repetido !!!!!

Escenario:

Delphi 7
Componentes IBX
FireBird 1.5.3 ubicada en Server Linux
Aplicacion Server/Client
Client en WinXP

La situación es: cargo un formulario donde aparece un DBGrid conectado a una base de datos (IBDataBase, IBTransaction, IBDataSet, DataSource) al selecionar la celda requerida en la columna deseada del dbgrid, paso a editar el valor incluido en la celda, para eso en el evento OnColEnter comparo el nombre de la colmuna y luego coloco la opcion de edicion para cambiar dicho valor. Luego, continuo en la misma columan de la misma manera pero en la siguiente fila hasta modificar todas las filas (6). Todo queda perfecto, pero cuando salgo de la aplicación y vuelvo a entrar al mismo formulario en el dbgrid aparecen las (6) filas pero en la columna que se modificó aparece el último valor que entré en la ultima fila y repetido en todas las demás filas.

He revisado el DataChage en el DS no tiene nada, no se hace ningun post,
Ahora bien ¿De que depende este comportamiento?
Responder Con Cita
  #2  
Antiguo 09-02-2006
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Unhappy Ensayo y Error

He realizado varias pruebas tales como: coloqué un disparador en la base de datos que se activa cuando se hace un update en la tabla en cuestión, y efectivamente cuando estoy haciendo la edición en el dbgrid se actualiza directamente la tabla, por lo que no se cómo controlar esto y poder manipularlo es decir si se hace una edición se debería hacer un post y seguidamente un commit, pero quisiera saber como es el comportamiento entre un ibdataset y un dbgrid, tal vez el conocer dicho comportamiento me ayudaría a controlar la situación...
Responder Con Cita
  #3  
Antiguo 09-02-2006
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Question Otra prueba

He realizado otra prueba: Coloqué componentes tales como TEdit para leer los datos y luego de leerlos les hago un post y los graba perfectamente, según el dbgrid, pero al cerrar la aplicación y volverla a abrir me sale con el mismo comportamiento (Error para mi). También informo que en los eventos del IBDataSet AfterPost y AfterDelete se hace un CommingRetaing; Que podrá ser
Responder Con Cita
  #4  
Antiguo 09-02-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Muestranos todo el codigo relacionado con esa transaccion, sea codigo Delphi o SQL, ademas de las propiedades modificadas del Dataset
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #5  
Antiguo 09-02-2006
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Question Información Requerida

Ok en el IBDataSet están definidos en los eventos AfterPost y AfterDelete coloco un CommitRetaining.

En el IBDataSet Detalle tengo lo siguiente:

SqlModify:
Código SQL [-]
update "LISTA_CONTENIDO"
set
"SEMANA" = :SEMANA,
"FECHA_INICIO" = :FECHA_INICIO,
"FECHA_FIN" = :FECHA_FIN,
"CEDULA" = :CEDULA,
"NOMBRE" = :NOMBRE,
"TELEFONO" = :TELEFONO,
"PLACA" = :PLACA,
"MARCA" = :MARCA,
"COLOR" = :COLOR,
"MODELO" = :MODELO,
"NUMERO_LISTA" = :NUMERO_LISTA,
"PESO_INICIAL" = :PESO_INICIAL,
"PESO_FINAL" = :PESO_FINAL,
"PESO_CIBICO" = :PESO_CIBICO,
"ORDEN_DESPACHO" = :ORDEN_DESPACHO,
"TIPO_MATERIAL" = :TIPO_MATERIAL
where
"SEMANA" = :OLD_SEMANA and
"FECHA_INICIO" = :OLD_FECHA_INICIO and
"FECHA_FIN" = :OLD_FECHA_FIN

SqlInsert:
Código SQL [-]
insert into "LISTA_CONTENIDO"
("SEMANA", "FECHA_INICIO", "FECHA_FIN", "CEDULA", "NOMBRE", 
"TELEFONO", "PLACA", "MARCA", 
"COLOR", "MODELO", "NUMERO_LISTA", "PESO_INICIAL", "PESO_FINAL", 
"PESO_CIBICO", 
"ORDEN_DESPACHO", "TIPO_MATERIAL")
values
(:SEMANA, :FECHA_INICIO, :FECHA_FIN, :CEDULA, :NOMBRE, :TELEFONO, 
:PLACA, 
:MARCA, :COLOR, :MODELO, :NUMERO_LISTA, :PESO_INICIAL, :PESO_FINAL, 
:PESO_CIBICO, :ORDEN_DESPACHO, :TIPO_MATERIAL)

SqlDelete:
Código SQL [-]
delete from "LISTA_CONTENIDO"
where
"SEMANA" = :OLD_SEMANA and
"FECHA_INICIO" = :OLD_FECHA_INICIO and
"FECHA_FIN" = :OLD_FECHA_FIN

SqlRefresh:
Código SQL [-]
Select 
"SEMANA",
"FECHA_INICIO",
"FECHA_FIN",
"CEDULA",
"NOMBRE",
"TELEFONO",
"PLACA",
"MARCA",
"COLOR",
"MODELO",
"NUMERO_LISTA",
"PESO_INICIAL",
"PESO_FINAL",
"PESO_CIBICO",
"ORDEN_DESPACHO",
"TIPO_MATERIAL"
from "LISTA_CONTENIDO" 
where
"SEMANA" = :SEMANA and
"FECHA_INICIO" = :FECHA_INICIO and
"FECHA_FIN" = :FECHA_FIN

SqlSelect:
Código SQL [-]
select * from LISTA_CONTENIDO where
SEMANA = :SEMANA and
FECHA_INICIO = :FECHA_INICIO and
FECHA_FIN = :FECHA_FIN

En el IBDataSet Maestro tengo lo siguiente:

SqlModify:
Código SQL [-]
update "LISTA"
set
"SEMANA" = :SEMANA,
"FECHA_INICIO" = :FECHA_INICIO,
"FECHA_FIN" = :FECHA_FIN,
"OBS" = :OBS
where
"SEMANA" = :OLD_SEMANA and
"FECHA_INICIO" = :OLD_FECHA_INICIO and
"FECHA_FIN" = :OLD_FECHA_FIN

SqlInsert:
Código SQL [-]
insert into "LISTA"
("SEMANA", "FECHA_INICIO", "FECHA_FIN", "OBS")
values
(:SEMANA, :FECHA_INICIO, :FECHA_FIN, :OBS)

SqlDelete:
Código SQL [-]
delete from "LISTA"
where
"SEMANA" = :OLD_SEMANA and
"FECHA_INICIO" = :OLD_FECHA_INICIO and
"FECHA_FIN" = :OLD_FECHA_FIN

SqlRefresh:
Código SQL [-]
Select 
"SEMANA",
"FECHA_INICIO",
"FECHA_FIN",
"OBS"
from "LISTA" 
where
"SEMANA" = :SEMANA and
"FECHA_INICIO" = :FECHA_INICIO and
"FECHA_FIN" = :FECHA_FIN

SqlSelect:
Código SQL [-]
select * from "LISTA" order by "SEMANA"

Ahora bien, la tabla maestra contiene datos de definición de listas:

Semana=====>Campo Relación
Fecha_Inicio==>Campo Relación
Fecha_Fin====>Campo Relación

La tabla detalle contiene detalles de la lista como identificacion de vehiculos y su chofer:

Semana=====>Campo Relación
Fecha_Inicio==>Campo Relación
Fecha_Fin====>Campo Relación
Placa
Peso_Inicial
Peso_Final
{datos del vehiculo}
Cedula
{datos del chofer}

El código delphi lo tengo cuando leo los campos Peso_Inicial y Peso_Final en la tabla detalleis es:

Código Delphi [-]
dm.ibds_Lista_despacho.Edit;
dm.ibds_Lista_despacho.FieldByName('peso_inicial').AsInteger:=StrToInt(LabeledEdit5.Text);
dm.ibds_Lista_despacho.Post;
dm.ibds_Lista_despacho.Close;
dm.ibds_Lista_despacho.Open;
dbgrid3.Refresh;

Gracias, por la atención.
Responder Con Cita
  #6  
Antiguo 11-02-2006
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
La solución al problema planteado inicialmente, fué en agregar a la clausula SqlModify el campo de placa, para así modificar únicamente el registro que corresponde y no todos los que contenían semana, fecha_inici y fecha_fin:

Código SQL [-]
update "LISTA_CONTENIDO"
set
"SEMANA" = :SEMANA,
"FECHA_INICIO" = :FECHA_INICIO,
"FECHA_FIN" = :FECHA_FIN,
"CEDULA" = :CEDULA,
"NOMBRE" = :NOMBRE,
"TELEFONO" = :TELEFONO,
"PLACA" = :PLACA,
"MARCA" = :MARCA,
"COLOR" = :COLOR,
"MODELO" = :MODELO,
"NUMERO_LISTA" = :NUMERO_LISTA,
"PESO_INICIAL" = :PESO_INICIAL,
"PESO_FINAL" = :PESO_FINAL,
"PESO_CIBICO" = :PESO_CIBICO,
"ORDEN_DESPACHO" = :ORDEN_DESPACHO,
"TIPO_MATERIAL" = :TIPO_MATERIAL
where
"SEMANA" = :OLD_SEMANA and
"FECHA_INICIO" = :OLD_FECHA_INICIO and
"FECHA_FIN" = :OLD_FECHA_FIN and
"PLACA" =:OLD_PLACA

Gracias por la atención....
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
Obtener el último registro insertado mutant09 SQL 3 04-05-2004 20:59:21
Ultimo registro ander Firebird e Interbase 3 18-03-2004 14:52:02
como saber el identificador del último registro almacenada en una base de datos. soyhugo Varios 2 16-02-2004 16:04:04
Obtener el último registro juanchi Conexión con bases de datos 2 06-02-2004 01:52:21
Ir al último registro de una tabla fortran Tablas planas 6 05-09-2003 16:36:02


La franja horaria es GMT +2. Ahora son las 15:34:52.


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