FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Consula sobre Findcomponent
Hola Foro:
Estoy usando Delphi 5.0 y necesito hacer referencia a más de una consulta. Para esto pensaba utilizar la opción Findcomponent y en una variable string pasar el dato de la consulta que necesito. En el ejemplo que muestro no estoy utilizando una variable, estoy escribiendo el nombre del componente como 'texto', esto es solamente más que para probar. El problema en que aparece un error inentendible. Esto funciona OK Edit2.text:= ABM_Rubros.Form_ABM_Rubros.Query11.fields[1].value; Esto No Edit2.text:= TQuery(FindComponent('ABM_Rubros.Form_ABM_Rubros.Query11')).fields[1].value; Tal vez me sepan decir en donde le estoy pifiando. Desde ya muchas gracias |
#2
|
||||
|
||||
Cita:
¿No será un Access Violation? Sin el error, todo lo que te podamos decir son suposiciones.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
||||
|
||||
Hola
Gracias por atender mi consulta.
Efectivamente el mesnaje es 'Access violation at adress 00494A3C in module nnn' |
#4
|
||||
|
||||
Cita:
Tendrías que tener algunas consideraciones, como verificar si FindComponent retornó algo como lo que estas esperando:
Vale aclarar que si estas ejecutando FindComponent en un evento o dentro del código de un TComponent (Posiblemente de un TForm), FindComponent lo ejecutará Self y me parece que vos queres buscarlo en Form_ABM_Rubros, por lo que tendrás que hacer algo como: Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
||||
|
||||
- FindComponent busca en el Form o en el Contenedor donde está, si pretendes buscar en Form_ABM_RUBROS, deberás usar Form_ABM_RUBROS.FindComponent(.....);
- FindComponent devuelve nil (puntero nulo) si no encuentra el componente. Por tanto, siempre debes verificar que se ha encontrado, de lo contrario, en TQuery(nil).Fields <<<<<< Aquí estas traspasando un puntero nulo, Access Violation.
- FindComponent busca por el nombre del componente, por tanto tu instrucción sería más o menos:
// saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#6
|
||||
|
||||
Salió!!!
Quedó como me sugirió Delphi.com.ar
Edit2.Text:=TQuery(Form_ABM_Rubros.FindComponent('Query11')).Fields[1].Value; Con la sugerencia de Lepe no entiende la propiedad Fields[1] (Undeclared identifier) Gracias por su ayuda. |
#7
|
||||
|
||||
Cita:
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#8
|
||||
|
||||
Hola, estoy intentando hacer lo mismo que Carmelo pero no ne sale a la pregunta directa de Delphi.com.ar:
Cita:
Tengo un DataModule (DtmDatos) con n IBDataSet (algunos son IBVentas, IBClientes, IBProveedores, etc) En mi forma2 (FrmCambiaSQL) donde tengo un TDataSource y una combinación de Tcomboxbox, Tedit y otros componentes para que el usuario pueda crear un filtro (where algo = algo) que se añade a la sentencia select del IBDataSet corespondiente. en el boton que aplica los cambios para crear el filtro tengo bastantes lineas con algo como esto: y haci para cada IBDataSet que uso mi primera intención era poner algo así: pero desde el componente tDataSource no puedo accesar a la propiedad SelectSQL, esto seria lo ideal que nesecito. con este hilo intente lo que aconsega Delphi.com.ar Cita:
Gracias
__________________
Espero poder seguir exprimiéndote el cerebro 8) Jorge Zamora Ginez Puebla, Pue. México |
|
|
|