![]() |
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? :confused: No se que pensar, necesito ayuda.... Virginia |
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 |
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 |
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 |
Cita:
El NEW sirve para referenciar al valor del campo que se esta añadiendo |
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 |
La franja horaria es GMT +2. Ahora son las 10:01:50. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi