[Lazarus-es] [MySQL] Obtener el nombre de una tabla consultada

Javier Jait javierjait en yahoo.com
Sab Nov 15 20:49:54 CET 2008


Calculo que tenes 2 opciones.
Una sería modificar el FPC para que publicar la propiedad TableName, el
componente TCustomCustomQuery tiene una variable FTableName que es privada.
Yo trate de hacerlo pero tuve problemas para recompilar el FPC y que Lazarus
lo tome.
La otra opción es que busques el código de TCustomSQLQuery.SQLParser que hay
separa la información y le da el valor a FTableName. A lo mejor ejecutando
eso, podés obtener el nombre de la tabla.
Por último, podrías buscar en SQLQuery.SQL.Text, el texto que viene después
de from, eso sería el nombre de la tabla.
 
Saludos

  _____  

De: lazarus-es-bounces en lazarus.freepascal.org
[mailto:lazarus-es-bounces en lazarus.freepascal.org] En nombre de Usuario
Anónimo
Enviado el: Viernes, 14 de Noviembre de 2008 10:07
Para: Spanish version of Lazarus List
Asunto: [Lazarus-es] [MySQL] Obtener el nombre de una tabla consultada



Hola, pongamos que tengo un programa que procesa consultas simples MySQL del
tipo select * from Tabla mediante el componente TSQLQuery. Necesito guardar
en una variable de tipo string el nombre de la tabla consultada. Ejemplo:

El programa procesa la siguiente consulta: select * from Carros;

procedure TForm1.ProcesaConsulta;

var

   i: integer; // Contador para recorrer los campos de un registro 

    NombreTabla: string; // Variable de tipo string para almacenar el nombre
de la tabla

begin

    SQLQuery1.SQL.Text := 'select * from Carros';
    SQLQuery1.Open;
    SQLQuery1.First;
    while not SQLQuery1.EOF do // Este bucle recorre todos los registros de
la consulta, desde el primero al último 
        begin
            for i := 0 to SQLQuery1.Fields.Count - 1 do // Muestra en
mensajes el contenido de cada campo del registro       
                ShowMessage('Nombre del campo: ' +
SQLQuery1.Fields.Fields[i].FieldName + 
                                     ' Contenido: ' +
SQLQuery1.FieldByName(SQLQuery1.Fields.Fields[i].FieldName).AsString);
            SQLQuery1.Next; // Pasa al siguiente registro
        end;
   NombreTabla := <no sé qué asignar aquí>; // NombraTabla ha de contener
Carros 
end;

¿Cómo puedo saber qué tabla es la consultada? Ya se que es Carros y que
puedo obtenerla mediante un manejo de cadenas pero me gustaría saber si hay
alguna forma más inmediata de hacerlo, pienso que puede que el sistema lo
almacene por algún lado y no haga falta que haga un tratamiento de la cadena
select * from Tabla para obtener el nombre de la tabla.

Muchas gracias.

 
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20081115/0097a282/attachment-0001.html>


More information about the Lazarus-es mailing list