PDA

Ver la Versión Completa : no se me actualizan los DBEDit


Giniromero
07-10-2003, 19:02:13
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?

:confused: No se que pensar, necesito ayuda....

Virginia

Giniromero
08-10-2003, 13:05:24
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, ' +
':DOMICL, '

' :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 = :DOMICL,'
' 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

sanxpue
08-10-2003, 19:23:48
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

Giniromero
09-10-2003, 10:42:05
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

__cadetill
09-10-2003, 10:47:37
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

Giniromero
09-10-2003, 13:58:36
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