Delphi - ¡¡¡Ernesto D'espirito' - Guardar campos fklookup

 
Vista:

¡¡¡Ernesto D'espirito' - Guardar campos fklookup

Publicado por Andres (11 intervenciones) el 11/11/2002 16:16:08
Hola amigos.
Como se puede hacer para guardar en una tabla campos fklookup, fkcalculated.
Quisiera hacerlo por sql pero solo me guarda los campos
fkdata. De ultima poder grabarlos en una tabla por codigo
Desde ya muchas Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Por favor, para la próxima vez...

Publicado por Ernesto D'Spirito (706 intervenciones) el 14/11/2002 08:41:56
Si ibas a escribir mi nombre en el asunto de tu nota, por lo menos podrías haberlo escrito bien, pero te agradecería mucho si en adelante no usaras ese artilugio para atraer mi atención o la de otro forista sobre tus mensajes.

Es regla de netiquette de los foros (y de sentido común) el no dirigir las preguntas a un forista determinado, porque si lo haces:

1) Comprometes a alguien en particular a responderte cuando en realidad no está obligado a hacerlo, pues el responder en los foros es voluntario, y cada cual es libre de responder las preguntas que le parezcan en función de su conocimiento y su tiempo.

2) Desprecias la ayuda que pudiera brindarte otro miembro del foro.

Igual respondería tu pregunta pero realmente no entiendo qué es lo que quieres hacer y no puedes.

Ernesto D'Spirito
http://www.latiumsoftware.com/es
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Por favor, para la próxima vez...

Publicado por Andres (11 intervenciones) el 14/11/2002 13:36:00
Quiero aclararte que en ningún momento tuve la intención de realizar ningún tipo de artilugio, como vos decís, me tome el atrevimiento de escribir tu nombre en el asunto de mi pregunta debido a que soy un asiduo lector de tus boletines y creí que por tu gran conocimiento eras la persona indicada para darme una respuesta certera.
Si te sentiste comprometido a contestarme te pido mil disculpas yo no tuve, ni tengo, ni tendré malas intenciones en este foro, además en ningún momento desprecie la ayuda de otros foristas al contrario, estoy mas que agradecido a todas las personas que alguna vez dedicaron un segundo de su tiempo a responderme y a las que jamás me respondieron alguna pregunta también les agradezco ya que yo leo todos los mensajes y también me fueron de mucha ayuda en mas de una oportunidad.
Además yo también te pediría que no me prejuzgues, ya que esta fue la primera y ultima vez que hago una pregunta así, por lo que considero que tus fundamentos para decir que desprecio la ayuda de otro forista, y que uso artilugios para llamar la atención de alguien son escasos, maliciosos y carecen de veracidad, debido a que participo de este foro hace varios meses, y a través del tiempo siempre tuve una conducta intachable.

PD: Perdón por haber escrito mal tu nombre.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Por favor, para la próxima vez...

Publicado por Ernesto D'Spirito (706 intervenciones) el 14/11/2002 21:56:43
Aunque es un hecho que pretendiste llamar mi atención personal hacia tu mensaje, de ningún modo quise implicar que tuvieras malicia o algo así. Sólo traté de hacerte ver el por qué no es apropiado hacer eso, pero la verdad te pido disculpas mi falta de tacto. Soy demasiado directo para decir las cosas, y aunque el tono de mi mensaje pueda parecer severo, no soy para nada así, en lo absoluto.

Ernesto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Guardar campos fklookup

Publicado por Ernesto D'Spirito (706 intervenciones) el 15/11/2002 00:29:53
A ver si entendí lo que quieres hacer... Si tienes una tabla o consulta con campos de datos, calculados y lookup, y quieres guardar todo eso en una tabla normal, pero con todos los campos como datos, entonces coloca un componente TTable en el formulario, asigna el nombre de la tabla destino en la propiedad TableName, y emplea un código como el siguiente para copiar de Table1 a Table2:

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
Table1.Active := True;
with Table2 do begin
// Eliminamos la tabla si existe
Active := False;
if Exists then DeleteTable;

// Creamos la estructura
DatabaseName := Table1.DatabaseName;
TableType := ttParadox;
TableName := 'Customer2.DB';
for i := 0 to Table1.FieldDefs.Count - 1 do
FieldDefs.AddFieldDef.Assign(Table1.FieldDefs[i]);
CreateTable;

// Copiamos los registros
Active := True;
while not Table1.EOF do begin
Append;
for i := 0 to Table1.FieldCount - 1 do
try
Fields[i].Value := Table1.Fields[i].Value;
except
end;
Post;
Table1.Next;
end;
end;
end;

El código de arriba es una base. Posiblemente necesite ajustes para tratar situaciones que no he contemplado.

Ernesto D'Spirito
http://www.latiumsoftware.com/es
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Guardar campos fklookup - SQL

Publicado por Ernesto D'Spirito (706 intervenciones) el 15/11/2002 00:46:59
Me había olvidado que preguntabas cómo hacerlo por SQL....

Bueno, aquí no te daré el código hecho porque es un poco más complicado, pero a ver si te oriento. En cierto modo el código anterior sirve como esqueleto, pero por ejemplo para crear la tabla primero tienes que generar la cadena con la consulta CREATE TABLE, para lo cual tendrás que ir interpretando la definición de los campos para ir poniendo las palabras reservadas correspondientes. Al mismo tiempo puedes ir armando la consulta INSERT INTO usando parámetros para los campos.

Al final del proceso preliminar ejecutas la consulta CREATE TABLE y dejas preparada la consulta INSERT INTO (con el método Prepare).

La consulta INSERT INTO se ejecutará por cada registro de Table1, pero primero recorres los campos uno por uno como en el ejemplo anterior y asignas los valores de los parámetros.

Espero que te sirva de orientación.

Ernesto D'Spirito
http://www.latiumsoftware.com/es
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Guardar campos fklookup

Publicado por Ernesto D'Spirito (706 intervenciones) el 15/11/2002 00:33:12
A ver si entendí lo que quieres hacer... Si tienes una tabla o consulta con campos de datos, calculados y lookup, y quieres guardar todo eso en una tabla normal, pero con todos los campos como datos, entonces coloca un componente TTable en el formulario, asigna el nombre de la tabla destino en la propiedad TableName, y emplea un código como el siguiente para copiar de Table1 a Table2:

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
Table1.Active := True;
with Table2 do begin
// Eliminamos la tabla si existe
Active := False;
if Exists then DeleteTable;

// Creamos la estructura
DatabaseName := Table1.DatabaseName;
TableType := ttParadox;
TableName := 'Customer2.DB';
for i := 0 to Table1.FieldDefs.Count - 1 do
FieldDefs.AddFieldDef.Assign(Table1.FieldDefs[i]);
CreateTable;

// Copiamos los registros
Active := True;
while not Table1.EOF do begin
Append;
for i := 0 to Table1.FieldCount - 1 do
try
Fields[i].Value := Table1.Fields[i].Value;
except
end;
Post;
Table1.Next;
end;
end;
end;

El código de arriba es una base. Posiblemente necesite ajustes para tratar situaciones que no he contemplado.

Ernesto D'Spirito
http://www.latiumsoftware.com/es
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar