Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Copiar "Algunos" Campos de una Tabla a otra - ZEOSDB Sqlite (https://www.clubdelphi.com/foros/showthread.php?t=79905)

martini002 20-08-2012 21:09:11

Copiar "Algunos" Campos de una Tabla a otra - ZEOSDB Sqlite
 
Saludos amigos donde quiera que se encuentren.

En esta ocasion les traigo una duda
estoy usando el gestor de Zeos 7, en Delphi 2010
estoy trancado desde esta mañana en un problemita,

Quisiera copiar un par de datos de una tabla a otra en la misma BD

Ejemplo, Copiar Articulo y Precio desde la tabla Inventario
a los campos Articulo Precio de la tabla Factura,

Estoy haciendo esto pero no me da resultado,
me da error, de "SQL logic error or missing Database"

Bueno ese es la unica traba que tengo por ahora :)
Gracias por su tiempo

Saludos
Martin

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
if StrToInt(Edit1.Text)>0 then
  ZQueryBD.Close;
  ZQueryBD.SQL.Clear;
  ZQueryBD.SQL.Text := 'Insert Into Factura (Articulo, Precio) Select Articulo Precio From Inventario Where Codigo = '+Edit1.Text;
  ZQueryBD.Open;
end;

roman 20-08-2012 21:13:23

Falta una coma entre articulo y precio en la parte del select.

// Saludos

martini002 20-08-2012 23:21:24

Excelente Roman como siempre,
y yo pues con mi fallas de fabrica haha,

me ha funcionado perfecto,
agregue este codigo para mostar entonces la BD Factura en un DBGrid

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
if StrToInt(Edit1.Text)>0 then
  ZQueryBD.Close;
  ZQueryBD.SQL.Clear;
  ZQueryBD.SQL.Text := 'Insert Into Factura (Articulo, Precio) Select Articulo, Precio From Inventario Where Codigo = '+Edit1.Text;
  ZQueryBD.SQL.Text := 'Select * From Factura'; //Nuevo
  ZQueryBD.Open;
end;

Pero ahora esta presentando algo que pude resolver, pero sin embargo me limita,
mira, la cuestion es que me muestra el Precio correctamente, pero el nombre del articulo
me lo cambia por (MEMO), estuve leyendo por otros lados sobre eso,
pero me dice que tengo que agregar unas lineas de codigo, la cuestion es que no logro entenderla,
por otro lado el tipo de dato de ese campo Articulo, es TEXT, y por eso es que me muestra el (MEMO)
Ahora, lo cambio por un tipo de dato CHAR (30) y muestra bien el nombre,
tuve que colocarle un maximo de 30 porque sino crea una celda muy ancha
que envia el Precio a un lado y no se ve, aunque esa es la unica limitacion,
me gustaria saber porque muestra eso con un (MEMO), no he usado ningun Memo hasta ahora.

Gracias

roman 21-08-2012 01:24:26

Un campo TEXT nomalmente se usa para guardar textos que abarcan más de una línea (un memo), pero un DBGrid está diseñado para mostrar la informacíon de cada registro en una sóla línea por lo cual no podría mostrar un campo así. Por ello es que pone la palabra MEMO en lugar del contenido. Sucede algo similar si se trata de un campo BLOB. En lugar del contenido verás la palabra BLOB.

// Saludos

martini002 21-08-2012 01:36:58

Roman, como podria almacenar en una variable,
algun dato de una "columna,fila" en una BD

ejemplo, estoy intentando algo asi como esto,
pero no me da resultados, mira:

Gracias

Código Delphi [-]
X:=ZQuery.SQL.Add('Select Columna From Tabla Where Fila = 0');

roman 21-08-2012 01:45:30

Esta es la segunda vez que cambias de tema en el mismo hilo y no es correcto. Abre otro hilo para preguntas distintas.

// Saludos

Casimiro Notevi 21-08-2012 01:46:41

Cita:

Empezado por martini002 (Mensaje 440120)
Roman, como podria almacenar en una variable,
algun dato de una "columna,fila" en una BD

ejemplo, estoy intentando algo asi como esto,
pero no me da resultados, mira:
Gracias
código Delphi [-]X:=ZQuery.SQL.Add('Select Columna From Tabla Where Fila = 0');

Código Delphi [-]
tuvariable := zquery.FieldByName("nombre_campo").AsString;


Por cierto, recuerda nuestra guía de estilo, preguntas distintas en hilos distintos, gracias.

EDITO: acabo de ver el mensaje de Román, más claro imposible.


La franja horaria es GMT +2. Ahora son las 07:44:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi