Modificar Tablas desde Codigo
Hola amigos
tengo un problema. Hace un tiempo realice un sistema con Interbase,,, y ahora me piden una modificación.. como el sistema esta poblado... necesito agregar campos a una tabla en particular...y quisiera realizarlo desde delphi.. la siguiente sentencia me agrega el campo Pro_Precio a la tabla Producto, de tipo Integer y cuyo valor por Defecto es 0
mi problema esta en como ejecuto esa sentencia desde delphi... utilizo igualmente los IBQuery... o se necesita otro componente.. y para eliminar el campo estaria utilizando esto
gracias... |
se me olvidada..
que debo preguntar si el campo existe(eso no se como hacerlo).... si es así, que no se cree... de lo contrario..que se cree PS: utilice el componente IBQuery para ejecutarlo y me funciono... (sigo usando este mismo componente o debo utilizar otro?
donde Datos es un Form de tipo DataModule....IBQ_Edit, es un IBQuery |
Que tal,
Así preguntas por un campo de una tabla.
Saludos |
juanelo ya te ha dicho como averiguar por la existencia de dicho campo, asi que solo me queda decirte que me parece bien que uses el IBQuery para este caso, no veo cual pueda ser el problema ;).
|
Holas,... gracias
ejecute la sentencia que me dio juanelo.. y me da el siguiente error [Error] fmSQLEditor.Query: Column does not belong to referenced table.Dynamic SQL Error. SQL error code = -206. Column unknown. Producto. [/Error] la sentencia la ejecute desde monitor SQL de la sgte forma
|
buscando por ahí.. encontre que la consulta debo realizarla con comillas simples y no dobles.. por lo que quedaría así
ahora tendria que ver como traspaso eso desde delphi, ya que si pongo la comilla simple me lo toma como error de programación (asume termino de linea) alguien sabe cual es el comodin para solucionarlo....?
|
Debes colocar comilla simple porque seguramente tu BD esta en Dialecto 3 ;).
En cuanto a lo de Delphi, usalo asi:
O tambien con la función QuotedStr, asi:
|
Cita:
Salud OS Edito: Se me ha adelantado estimado jhonny. :( |
Otra cosa, para el proposito que buscas no es necesario el Order By, ya que solo necesitas saber si existe o no el campo y ademas siempre te devolvera un solo registro ;).
P.D. para egostar: no siempre puedo perder :D. |
Cita:
Salud OS |
Se me olvidaba, los nombres de las tablas y los campos deben ir en mayusculas, por lo que sería conveniente (claro que eso lo decidis vos), hacerle lo siguiente a la consulta...
Propongo esa consulta en caso de que el nombre de la tabla y el del campo, lo vayas a pasar por parametro o algo asi ;). P.D. para egostar: No en el caso de ser el perder :). |
Mushas gracias...
me funciono super... utilice esto
Cita:
Pero me tomo bien la sentencia...gracias:D |
ahh... se me olvidaba y aprovechando el hilo
si quiero traspasar (crear o modificar), ya sea un trigger o un procedimiento almacenado lo realizo de la misma forma?... por medio de un IBQuery.. esto lo digo por lo extenso de las lineas que puede tener uno de estos... Todo esto lo necesito realizar ya que lo estoy probando con la base que tengo de respaldo en mi trabajo.. pero lo que quiero hacer es crear un apartado de mantenimiento en donde todos los cambios que necesite los traspase directo a la base de datos.. y sin tener que hacer los cambios en la base ... la idea es llevar el archivo ejecutable.. cargarlo.. y desde ahí que se realicen todos los cambios en la base... |
Si, tambien puedes usar el IBQuery para eso, pero la verdad es que es muy aburrido y engorroso hacer lo que quieres, yo antes lo hacia de la misma manera pero se me convirtio en un problema ya que se volvio en otro programa mas para "mantener", en la versión 2.1 de FireBird vienen cosas interesantes como el "Alter or Create" pero aún asi debe ser muy aburrido mantener este programita :)...
Lo que hice mas adelante fue usar el DBComparer, pero como necesitabamos que nuestros clientes pudieran actualizar sus BD de forma sencilla, pues siempre manteniamos una BD en Blanco (Sin un solo dato), pero con la estructura siempre actualizada, comenzamos a utilizar los componentes de DBComparer para Delphi, adaptamos el asunto a nuestra necesidad y enviamos un solo software a los clientes, cada que necesitaban una actualización pinchaban un boton, el programa se encargaba de descargar la BD vacia pero actualizada, en fbk y comprimida de un FTP, la descomprimia, la restauraba, comparaba la BD vacia pero actualizada contra la de nuestros clientes con dichos componentes y aplicaba los cambios, luego de eso... adios a mantener ese programita aburridor lleno de scripts confusos y dificiles de depurar por todos lados :). |
Gracias
veo que lo mejor será realizar las modificaciones y guardarlas como consultas SQL y luego ejecutarlas desde el IBManager o IBExpert... :p:D |
Cita:
|
Cita:
Cita:
|
Esta bien, como quien dice, billete es lo que hay :D
|
Ya se que se dio solución al problema pero me gustaria aportar otra forma de hacerlo, ya que en muchos caso el tener tanto quotedStr o tantos '''' es complicado para mi... al final leo el código de forma clara así:
y luego los parámetros en delphi
|
Estoy de acuerdo con RONPABLO a mi me sucede lo mismo :), los paramteros me facilitan la lectura para el futuro :), por eso yo tambien acostumbro a usarlos.
|
La franja horaria es GMT +2. Ahora son las 07:45:42. |
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