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

Carlos German Tejero german_tejero en yahoo.com.ar
Vie Nov 14 17:07:54 CET 2008


Entonces podrias hacer algo asi:

procedure TForm1.ProcesaConsulta(const TABLE_NAME:string);

const

  QUERY = 'SELECT * FROM %s;';

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 := Format(QUERY, [TABLE_NAME]);
    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 := TABLE_NAME
end;


y llamar a ProcesaConsulta('carros');

2008/11/14 Usuario Anónimo <usuarioanonimomysql en gmail.com>

> Pero según eso que has puesto el nombre de la tabla siempre va a ser el
> contenido de la constante TABLE_NAME y yo quiero que sea algo dinámico,
> independientemente de la consulta, es decir, quiero obtener el nombre de la
> tabla.
>
> Saludos.
>
> 2008/11/14 Carlos German Tejero <german_tejero en yahoo.com.ar>
>
> Podrias probar con algo asi, porque el componente TSQLQuery no sabe cual es
>> la tabla, ya que podrian ser mas de una:
>>
>>
>> procedure TForm1.ProcesaConsulta;
>>
>> const
>>
>>   QUERY = 'SELECT * FROM %s;';
>>
>>   TABLE_NAME = 'carros';
>>
>> 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 := Format(QUERY, [TABLE_NAME]);
>>     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 := TABLE_NAME
>> end;
>>
>>
>>
>> 2008/11/14 Usuario Anónimo <usuarioanonimomysql en gmail.com>
>>
>>> 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.
>>>
>>>
>>> _______________________________________________
>>> Lazarus-es mailing list
>>> Lazarus-es en lazarus.freepascal.org
>>> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>>
>>>
>>
>>
>> --
>> Carlos Germán Tejero
>>
>> _______________________________________________
>> Lazarus-es mailing list
>> Lazarus-es en lazarus.freepascal.org
>> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>
>>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lazarus.freepascal.org
> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>


-- 
Carlos Germán Tejero
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20081114/7241672a/attachment-0001.html>


More information about the Lazarus-es mailing list