FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Asignar como parámetro el nombre de la tabla
Buenas.
El problema es: Utilizo dos tablas con la misma estructura y distinto nombre dentro de mi base de datos (Interbase 7.1). Cuando coloco un IBDataset en el formulario e intento asignar en tiempo de ejecución el nombre de la tabla que quiero utilizar, me dá un error EIBInterbase = 'DYNAMIC SQL ERROR'. Código: ... IBDataSet1.SelectSQL.('SELECT * FROM :TABLA'); IBDataSet1.ParamByName('TABLA').AsString:= 'DATOSP' IbDataSet1.Open; y el error es 'TOKEN UNKNOWN - LINE 1, CHAR 14 ?'.' Ya he utilizado parametros para los valores de los campos si ningun problema. Tambien he utilizado comillas para el nombre de la tabla pero tampoco funciona. |
#2
|
||||
|
||||
Prueba esto:
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
|||
|
|||
Gracias por contestar Marcos:
Esta opción no la he utlizado porque me parece poco efectiva. Ten en cuenta que el IBDataset está cargado con las SQl necesarias para las actualizaciones de los registros (ModifySQL, DeleteSQL, RefreshSQL) y en todas ellas necesito insertar el nombre de la tabla en tiempo de ejecución, evitando la duplicación del formulario para gestionar las dos tablas. El problema viene en que el nombre de la tabla está ubicado en todas las sentencias SQL de el IBDataset (Como ya sabes). |
#4
|
||||
|
||||
No entiendo por qué dices que es poco efectiva.
Otra forma, que basicamente es lo mismo, puede ser esto:
De hecho, en modo diseño podrás poner una sql estática para ver campos persistentes o con otra finalidad, pero en ejecución cambiar las SQL por las que tienes en las constantes. Un saludo |
#5
|
|||
|
|||
Parametros para nombre de tablas
Gracias por contestar:
En la ayuda de Interbase ya he leido que nunca se pueden utilizar parámetros para definir nombres de tablas en las consultas del IBDataset. Ahora bien, lo de utilizar constantes con formateo lo voy a probar .. no se me había ocurrido .. aunque ya estaba pensando en utlizar alguna función que sustituyera en las strings de las sentencias SQL la ocurrencia *TABLA* por la que me interesara. como ejemplo: For x ... CambiarPor (SelectSQL.Strings[x], '*TABLA*', cNuevoNombreTabla); end; |
|
|
|