Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   MySql puede almacenar datos en una tabla virtual? (https://www.clubdelphi.com/foros/showthread.php?t=47607)

Damian666 02-09-2007 07:43:18

MySql puede almacenar datos en una tabla virtual?
 
Hola a todos, esta es una pregunta que me salio al ver el codigo de un programa, bueno esto es una parte.


Código Delphi [-]
 
2 : begin // reemplazar a datos ya existentes
Q3.SQL.Clear;
Q3.SQL.Clear;
Q3.SQL.Add('UPDATE TCARGO SET Descripcion=:z_nombre');
Q3.SQL.Add(' WHERE CodCargo=:z_codigo');
Q3.ParamByname('z_codigo').AsInteger := trunc(FNECodigo.value);
Q3.ParamByname('z_nombre').AsString := ENombre.Text;
Q3.ExecSQL;
end;


hasta donde entiendo Q3 es un TQuery, TCARGO la tabla y Descripción es el campo pero z_nombre y z_codigo que son? y como los interpreta Mysql? ya que estos campos o no se que puedan ser no los encontre en toooda la base de datos, ni declarados en tooodas las unidades del sistema.

gracias :D y hasta pronto :confused:

dec 02-09-2007 07:51:39

Hola,

Son parámetros. Son parámetros que pueden usarse para conformar la consulta SQL. Fíjate en las instrucciones que usan el método "ParamByName". Ahí se les está dando el valor adecuado a los parámetros. En definitiva, es una forma más o menos elegante de conformar consultas SQL, porque evitan posibles problemas y quebraderos de cabeza con comillas, dobles comillas, dobles comillas dobles...

Damian666 02-09-2007 08:09:42

Gracias por responder Dec Según SanGoogle parametro es:

Cita:

Una información que determina el funcionamiento de un programa. También se conoce como "argumento". Los parámetros pueden tener valores de todo tipo. Por ejemplo: números, textos, expresiones o incluso el nombre de un archivo. Estos valores siempre van acompañados de una instrucción o un identificador HTML que indica qué es lo que se debe hacer con ellos.
Aun no lo tengo claro, en realidad estaria almacenando información para realizar la consulta y luego de culminar la consulta el valor de este se pierde? aunque se visualizara en el campo ENombre.Text:confused:

Creo que estoy ya cansado y con sueño porque no entiendo:o gracias y saludos

dec 02-09-2007 08:19:51

Hola,

Parece que encontraste información relativa a los parámetros (o argumentos) que pueden pasarse a un programa, pero, no es el caso de los parámetros que tratamos aquí. En este caso... cómo explicarlo, el parámetro vendría a indicar una especie de "clave", donde se insertaría (en el lugar de la clave) el valor correspondiente.

Es, si no me equivoco, algo similar a como funciona la función "Format" de la unidad "SysUtils". Considera el siguiente código:

Código Delphi [-]
var
  s, nombre: string;
begin
  nombre := 'Pepito Grillo'; 
  s := Format('Tu nombre es: %S',[nombre]);
  ShowMessage(s);
end;

Piensa en "nombre" como un argumento, un parámetro, cuyo valor será situado (dentro de la cadena "s") en el lugar de la clave "%S". De tal modo que "ShowMessage" mostraría:

Código:

Tu nombre es Pepito Grillo
Pues en el caso de las consultas SQL es algo parecido. Tú indicas el lugar de la consulta donde habrá que situar el valor del parámetro oportuno. De este modo el lugar de ":z_nombre" en la cadena que forma parte de la consulta SQL:

Código Delphi [-]
Q3.SQL.Add('UPDATE TCARGO SET Descripcion=:z_nombre');

Será sustituído (en tiempo de ejecución) por el valor del parámetro "z_nombre". Para eso está más abajo:

Código Delphi [-]
Q3.ParamByname('z_nombre').AsString := ENombre.Text;

Con la que esa parte de la cadena de la consulta SQL quedaría en tiempo de ejecución:

Código SQL [-]
UPDATE TCARGO SET Descripcion=Pepito Grillo

... suponiendo que en "ENombre.Text" contenga la cadena "Pepito Grillo".

Como decía más arriba, todo esto es una elegante forma de evitar cosas como esta:

Código Delphi [-]
Q3.SQL.Add('UPDATE TCARGO SET Descripcion='+ENombre.Text+');

Y mucho peores... ni siquiera sé si funcionaría tal como lo escribo...

Damian666 02-09-2007 08:35:30

Muchas gracias por el ejemplo Dec creo que fue la unica forma de entender:o, ahora si podre investigar mas sobre este codigo ya que como me dijiste si se ve elegante y esta muy ordenado eh:D.

Gracias y hasta la proxima.:cool:


La franja horaria es GMT +2. Ahora son las 19:42:25.

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