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 07-10-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
no se me actualizan los DBEDit

Hola,

Estoy usando delphi 6 con interbase 7 y dialecto 3

tengo dos IBDataset vinculadas por un datasource.

La información del IBDataSet principal, TbAlumnos, se muestra en DBEdits, dentro de una de las pestañas del TabbelnoteBook. Eso va OK.

La del segundo, TbCliente, que está vinculado por el DataSource con el TbAlumnos, se muestra en otra ficha del mismo TabbelNoteBook, también en DBEdits.

El problema es que, no entiendo por que, cuando se cambia el registro activo de TbAlumnos,(al situarme en otro registro), al mirar la ficha donde vienen los datos de TbCliente, SÓLO PUEDO VER OK LA INFORMACIÓN SI HAGO UN CLICK SOBRE CADA UNO DE LOS CAMPOS DBEDIT!!!?????? No lo entiendo, si tengo mal los datos, vale, pero que me los muestre sólo cuando los edito????

No se como solucionarlo, pues, no se por que me pasa esto. ¿Tal vez estoy poniendo algo mal en el código sql?

No se que pensar, necesito ayuda....

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #2  
Antiguo 08-10-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
Hola a todos,

Tiene que ser algo del propio TBClientes, pues he puesto en dbedits campos de otro IBDataSet que también está conectado con el de TbAlumnos de la misma forma, y ese me lo refresca sin necesidad de hacer click sobre cada dbedit.

Las propiedades de la tabla que me da problemas son:


object TbClientes: TIBDataSet
Database = IBDBFX
Transaction = IBTransFX
AfterCancel = AfterCancel
AfterPost = AfterPost
BufferChunks = 1000
CachedUpdates = True
DeleteSQL.Strings = (
'delete from CLIENTES'
'where'
' NIC = :OLD_NIC')
InsertSQL.Strings = (
'insert into CLIENTES'

' (ACTCL, APELCL, CCCCL, CL2, CODPCL, CONDICL, CONTACTO, DOMICL,' +
' EMAIL, '

' NIC, NIFCL, NOMAILCLIEN, NOMCL, NOMCLAN, PAISCL, POBCL, PROVC' +
'L, SEXCL, '
' TELFCL, VIACL)'
'values'

' (:ACTCL, :APELCL, :CCCCL, :CL2, :CODPCL, :CONDICL, :CONTACTO, ' +
'OMICL, '

' :EMAIL, :NIC, :NIFCL, :NOMAILCLIEN, :NOMCL, :NOMCLAN, :PAISCL' +
', :POBCL, '
' :PROVCL, :SEXCL, :TELFCL, :VIACL)')
RefreshSQL.Strings = (
'Select '
' NIC,'
' APELCL,'
' NOMCL,'
' SEXCL,'
' ACTCL,'
' CL2,'
' CONTACTO,'
' VIACL,'
' DOMICL,'
' CODPCL,'
' POBCL,'
' PROVCL,'
' PAISCL,'
' TELFCL,'
' NOMCLAN,'
' CONDICL,'
' NIFCL,'
' NOMAILCLIEN,'
' EMAIL,'
' CCCCL'
'from CLIENTES '
'where'
' NIC = :NIC')
SelectSQL.Strings = (

'select ACTCL, APELCL, CCCCL, CL2, CODPCL, CONDICL, CONTACTO, DOM' +
'ICL, EMAIL, NIC, NIFCL, NOMAILCLIEN, NOMCL, NOMCLAN, PAISCL, POB' +
'CL, PROVCL, SEXCL, TELFCL, VIACL from CLIENTES'
'WHERE NIC =:NIC')
ModifySQL.Strings = (
'update CLIENTES'
'set'
' ACTCL = :ACTCL,'
' APELCL = :APELCL,'
' CCCCL = :CCCCL,'
' CL2 = :CL2,'
' CODPCL = :CODPCL,'
' CONDICL = :CONDICL,'
' CONTACTO = :CONTACTO,'
' DOMICL = OMICL,'
' EMAIL = :EMAIL,'
' NIC = :NIC,'
' NIFCL = :NIFCL,'
' NOMAILCLIEN = :NOMAILCLIEN,'
' NOMCL = :NOMCL,'
' NOMCLAN = :NOMCLAN,'
' PAISCL = :PAISCL,'
' POBCL = :POBCL,'
' PROVCL = :PROVCL,'
' SEXCL = :SEXCL,'
' TELFCL = :TELFCL,'
' VIACL = :VIACL'
'where'
' NIC = :OLD_NIC')
GeneratorField.Field = 'NIC'
GeneratorField.Generator = 'GEN_CLIENTES_ID'
GeneratorField.ApplyEvent = gamOnPost
DataSource = SrcAlumnos
Left = 168
Top = 184
object TbClientesACTCL: TIBStringField
FieldName = 'ACTCL'
Origin = 'CLIENTES.ACTCL'
end
object TbClientesAPELCL: TIBStringField
FieldName = 'APELCL'
Origin = 'CLIENTES.APELCL'
Size = 50
end
object TbClientesCCCCL: TIBStringField
FieldName = 'CCCCL'
Origin = 'CLIENTES.CCCCL'
Size = 25
end
object TbClientesCL2: TIBStringField
FieldName = 'CL2'
Origin = 'CLIENTES.CL2'
Size = 35
end
object TbClientesCODPCL: TIBStringField
FieldName = 'CODPCL'
Origin = 'CLIENTES.CODPCL'
Size = 5
end
object TbClientesCONDICL: TIBStringField
FieldName = 'CONDICL'
Origin = 'CLIENTES.CONDICL'
Size = 50
end
object TbClientesCONTACTO: TIBStringField
FieldName = 'CONTACTO'
Origin = 'CLIENTES.CONTACTO'
Size = 50
end
object TbClientesDOMICL: TIBStringField
FieldName = 'DOMICL'
Origin = 'CLIENTES.DOMICL'
Size = 50
end
object TbClientesEMAIL: TIBStringField
FieldName = 'EMAIL'
Origin = 'CLIENTES.EMAIL'
Size = 40
end
object TbClientesNIC: TSmallintField
FieldName = 'NIC'
Origin = 'CLIENTES.NIC'
Required = True
end
object TbClientesNIFCL: TIBStringField
FieldName = 'NIFCL'
Origin = 'CLIENTES.NIFCL'
Size = 10
end
object TbClientesNOMAILCLIEN: TIBStringField
FieldName = 'NOMAILCLIEN'
Origin = 'CLIENTES.NOMAILCLIEN'
Size = 1
end
object TbClientesNOMCL: TIBStringField
FieldName = 'NOMCL'
Origin = 'CLIENTES.NOMCL'
Size = 15
end
object TbClientesNOMCLAN: TIBStringField
FieldName = 'NOMCLAN'
Origin = 'CLIENTES.NOMCLAN'
Size = 15
end
object TbClientesPAISCL: TIntegerField
FieldName = 'PAISCL'
Origin = 'CLIENTES.PAISCL'
end
object TbClientesPOBCL: TIBStringField
FieldName = 'POBCL'
Origin = 'CLIENTES.POBCL'
Size = 35
end
object TbClientesPROVCL: TIBStringField
FieldName = 'PROVCL'
Origin = 'CLIENTES.PROVCL'
Size = 15
end
object TbClientesSEXCL: TIBStringField
FieldName = 'SEXCL'
Origin = 'CLIENTES.SEXCL'
Size = 1
end
object TbClientesTELFCL: TIBStringField
FieldName = 'TELFCL'
Origin = 'CLIENTES.TELFCL'
Size = 30
end
object TbClientesVIACL: TIBStringField
FieldName = 'VIACL'
Origin = 'CLIENTES.VIACL'
Size = 3
end
end


Si alguien ve algo en esto que pueda tener que ver.... os agradecería que me lo digeseis.... por que yo no he encontrado nada, por ahora.

Bueno, muchas gracias por todo.

Seguiré investigando.

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #3  
Antiguo 08-10-2003
sanxpue sanxpue is offline
Miembro
 
Registrado: jul 2003
Posts: 196
Poder: 21
sanxpue Va por buen camino
RefreshSQL.Strings = (
'Select '
' NIC,'
' APELCL,'
' NOMCL,'
' SEXCL,'
' ACTCL,'
' CL2,'
' CONTACTO,'
' VIACL,'
' DOMICL,'
' CODPCL,'
' POBCL,'
' PROVCL,'
' PAISCL,'
' TELFCL,'
' NOMCLAN,'
' CONDICL,'
' NIFCL,'
' NOMAILCLIEN,'
' EMAIL,'
' CCCCL'
'from CLIENTES '
'where'
' NIC = :NIC') <---- NIC =:OLD_NIC

weno yo uso asi el el TIbdataSet y nunca eh tenido problemas
__________________
saludos desde Puebla Mexico..
asanxt@hotmail.com
"como siempre a sus ordenes y siempre con buena cara"
'lolita me excitas, perversa piel de melocotón'
Responder Con Cita
  #4  
Antiguo 09-10-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
Hola,

Lo primero, gracias por la ayuda, aunque no me resuelva el problema.

Creo que tiene que ser algo de código del programa, por que he editado los campos de otra tabla, tabla2, que tiene una configuración parecida, y depende también de la de Alumnos y con ella funciona OK.

Si creo esta tabla2, con otro nombre, tabla3, sin asignarle ninguno de los procedures que tiene la tabla2, (sólo le asigno el vínculo con alumnos a través de DataSource y en el SQL "where campo =:campo", entonces me pasa lo mismo que con la de clientes.

Asique estoy investigando entre los procedures.

Pero tengo una duda.

¿Que diferencia hay entre el código, tal como lo tenía yo, y el que tu me aconsejas?

quiero decir, como funciona lo de:
campo =: OLD_campo
campo =: NEW_campo

saludos

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #5  
Antiguo 09-10-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Posteado originalmente por Giniromero
quiero decir, como funciona lo de:
campo =: OLD_campo
campo =: NEW_campo
El OLD sirve para referenciar al valor del campo que se esta modificando o borrando
El NEW sirve para referenciar al valor del campo que se esta añadiendo
Responder Con Cita
  #6  
Antiguo 09-10-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
Gracias, como siempre, por la ayuda, cadetill.

Por cierto, que ya sé cual era el problema por el que no se me refrescaban los DBEdit, lo explico un poco por si a alguien le sirve de ayuda.

En mi aplicación, para cambiar de registro en el IBDataSet principal de alumnos, cerraba el ibdataset de alumnos, para pasarle el código de la nueva consulta y luego la volvía a abrir.

Asíque he hecho que en el BeforeCloseAlumnos, se cierren estos IBDAtaSet, y en el afterOpenAlumnos se vuelvan a abrir, de modo que, esta vez, toman el valor del campo en común con el ibdataset de alumnos, pero del registro activo.

Puede que sea un poco rebuscado, y tal vez haya un modo más fácil, pero funciona.

Saludos a todos, y gracias.

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
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


La franja horaria es GMT +2. Ahora son las 19:35:17.


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