Delphi - como usar sentencias SQL en delphi

   
Vista:

como usar sentencias SQL en delphi

Publicado por many (25 intervenciones) el 24/02/2018 06:09:39
Buenas noches a todos y gracias por darle seguimiento a mis preguntas:

Estoy trabajando un formulario de facturación en delphi 7 y quiero saber si se puede trasladar todos los registros de una tabla a otra usando sentencias SQL.

Es con la finalidad de limpiar la tabla de detalles y enviarla a guardar de forma definitiva para historial de detalles

Ejemplo: temporal y detalles, son tablas:
hay que llevar el contenido de temporal a detalles, estas tienen los mismos campos.

Yo se que esto se hace con bucles pero quiero saber si se puede hacer como lo explico.

Saludo.
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

como usar sentencias SQL en delphi

Publicado por E.T. (1180 intervenciones) el 26/02/2018 21:02:35
De hecho, no es necesario usar bucles, una sola instruccion puede enviarte los datos de una tabla a otra
Tomando en cuenta que las tablas son isguales en su estructura, puedes hacer lo siguiente:

insert into tabla1 select * from tabla 2
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

como usar sentencias SQL en delphi

Publicado por many (25 intervenciones) el 28/02/2018 18:10:10
Saludo:

Esto esta bien, pero para aplicarlo desde delphi7 así directo no funciona, lo que quiero saber es esto que funciona muy bien desde sql server como puedo aplicarlo desde delphi.

insert into tabla1 select * from tabla 2


Otro saludo.
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

como usar sentencias SQL en delphi

Publicado por E.T. (1180 intervenciones) el 28/02/2018 18:15:35
Que componentes usas para conectar tu aplicación a la base de datos?
TADOConnection de la pestaña ADO? o DataBase de la pestaña BDE?
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

como usar sentencias SQL en delphi

Publicado por many (25 intervenciones) el 01/03/2018 18:04:55
Saludo, muy buenos dias

Estoy usando TADOConnection de la pestaña ADO,.

Ya tire dos adoquery y conecte ambas tablas a ellos no se si voy bien.

Saludo.
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

como usar sentencias SQL en delphi

Publicado por E.T. (1180 intervenciones) el 01/03/2018 20:41:58
De acuerdo.
Sólo necesitas un TADOQuery, que debe estar conectado al TADOCOnnection. En la propiedad "Connection" del adoQuery debe estar la ADOCOnnection.

Ya que los tienes enlazados, procede asi:
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Button1Click(Sender: TObject);
var sId: string;
begin
  sId := '1';//Aqui iria la clave id que identifica a la factura que vas a insertar
  //Esto en el supuesto de que tu sistema sea cliente - servidor
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('insert into tabla1 select * from tabla2');
  ADOQuery1.SQL.Add('where CampoId = ' + sId);//En caso de querer enviar toda la tabla, hay que quitar esta linea
  ADOQuery1.ExecSQL;//<-- Hay que tener cuidado con esta linea, pues existe el procedimiento Open
  //Se diferencia de éste pues el ExecSQL es para hacer insert y update, los cuales no regresan resultados
  //Y el Open se usa cuando quieres ver registros de alguna tabla
end;
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

como usar sentencias SQL en delphi

Publicado por many (25 intervenciones) el 02/03/2018 14:51:20
Buenos dias a todos,

Aqui le presento lo que he intentado hacer y me dice:

Error de sintaxis en la clausula FROM.


Tengo una tabla llamada detalle en en sql server
y la otra con el mismo nombre detalle en acces. esta la uso como detalle temporal.

Al finalizar la factura debo enviar la tablas de acces que es la temporal hacia la tabla detalle en SQL SERVER

Lo que no se es si se puede hacer estando las tablas en diferentes base de datos.

MODULO.detalleac.Close;

// MODULO.detalleac.Clear;

MODULO.detalleac.SQL.Add('insert into DETALLE select * from DETALLE');

//ADOQuery1.SQL.Add('where CampoId = ' + sId);//En caso de querer enviar toda la tabla, hay que quitar esta linea

MODULO.detalleac.ExecSQL;//<-- Hay que tener cuidado con esta linea, pues existe el procedimiento Open

//Se diferencia de éste pues el ExecSQL es para hacer insert y update, los cuales no regresan resultados
//Y el Open se usa cuando quieres ver registros de alguna tabla

Un saludos.
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

como usar sentencias SQL en delphi

Publicado por E.T. (1180 intervenciones) el 02/03/2018 17:40:31
Por ahi hubieras empezado, no es posible hacer eso entre access y sqlserver, lo que te recomiendo es mover tus tablas de access a sqlserver y usar la tabla temporal ahi, y con el ejemplo que te di ya funcionaría, de lo contrario tendrias que hacer un bucle como ya mencionaste al inicio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

como usar sentencias SQL en delphi

Publicado por many (25 intervenciones) el 02/03/2018 18:11:54
Saludo y muchísimas gracias,

Ya esta casi todo claro yo quisiera usar la tabla temporal de SQL SERVER pero el problema es que esta tabla la usaran en cada terminal que use el sistema de facturación y entonces si usan la mista que estará en la base de datos sql se juntaran los registros de todos al momento que estén facturando.

Esta es la razón de usarla local mene, creo que no se puede teniéndola en sql, y con el bucle hay que tirar varias lineas en varios formularios como también el de compras, nota de crédito entre otros.

Gracias adelantada
Saludo
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

como usar sentencias SQL en delphi

Publicado por E.T. (1180 intervenciones) el 02/03/2018 18:33:58
En efecto, se usaria la misma tabla temporal por todas las terminales, pero, puedes usar un campo de control, digamos el campo CAJA, en el cual pondrias un identificador unico por cada terminal y asi tendrias control sobre los detalles de cada terminal, y podrias hacer el traspaso de informacion entre las tablas usando el ejemplo que te di, con el campo ID, y usando en su lugar el campo CAJA. Hay muchas soluciones a tu problema usando sólo sqlserver
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

como usar sentencias SQL en delphi

Publicado por many (25 intervenciones) el 03/03/2018 01:48:12
Muchísimas gracias por es seguimiento que me has dado, le comente a un amigo lo sorprendido que estaba por velocidad de respuesta.

Si, lo que me recomienda esta muy bien ya lo había pensado pero tomando en cuenta todas las actividades sobre dicha tabla pensé que no era lo mejor ya hay que sumar con frecuencia, sacar artículos de lista, enviar a la impresora y mas importante aun si esta tabla se corrompe saldrían todas las terminales de servicio.

Digo esto ya que yo programaba en VISUAL FOXPRO 9 y las dbf sufren de este problema, no se si esta posibilidad sera posible pero lo pensé así.

Estoy tratando de hacerlo bien ya que no quiero regresar a tras cuando este lejos en este proyecto.

De todos modo me gusta la idea y si si me lo recomienda así lo haré.

Mil gracias.
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

como usar sentencias SQL en delphi

Publicado por E.T. (1180 intervenciones) el 03/03/2018 19:37:01
Yo te sugiero hacer el cambio, la corrupción de una tabla en sql (En general: sqlserver, Mysql, Firebird...) es más dificil de que suceda, no digo que no pase, pero es raro teniendo precauciones, como tener tu servidor con respaldo de energia, utilizar transacciones en tu aplicacion.
Suerte.
Si quieres seguir con el uso de una tabla temporal local abre un nuevo tema para ayudarte con la creación del bucle que te traspase la información.
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

como usar sentencias SQL en delphi

Publicado por many (25 intervenciones) el 05/03/2018 20:58:22
Buenas tardes a todos y todas

Agradezco mucho sus orientaciones estoy listo para cualquiera de las dos forma.

Saludo.
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

como usar sentencias SQL en delphi

Publicado por many (25 intervenciones) el 09/03/2018 01:04:33
Buenas noches E.T. y a todos

No se si ha sido el cansancio pera la verdad que me enredado un poco

Ya tengo mis dos tablas en la misma base de datos:
Detalle y dettem (detalle y detalle temporal) debo pasar los registros de dettem a la tabla detalle

Paso 1
Tiro un adoquery1
lo conecto a coneccion
lo conecto al datasource (a cual datasource al de detalle o al dettem)

Mi gran problema es que tengo un solo adoquery pero debo manejar dos tablas que son detalle y dettem.

MODULO.adoquery1.Close;
MODULO.adoquery1.SQL.Clear;
MODULO.adoquery1.SQL.Add('insert into detalle select * from dettem');

Creo que con otra ayudita damos por cerrado el tema por ahora.

Un saludo con mucho afecto.
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

como usar sentencias SQL en delphi

Publicado por E.T. (1180 intervenciones) el 09/03/2018 01:30:53
Está bien asi como lo tienes, solo falta ejecutarlo
1
2
3
4
5
MODULO.adoquery1.Close;
MODULO.adoquery1.SQL.Clear;
MODULO.adoquery1.SQL.Add('insert into detalle select * from dettem');
MODULO.adoquery1.SQL.Add('where clave_caja =' + id_claveCaja);//suponiendo que id_claveCaja es una variable tipo string con la clave de la caja que vas a mover
MODULO.adoquery1.ExecSQL;//algo asi, puede ser diferente entre componentes, pero debe llevar exec
Que hace esta instruccion, bien, pues a pesar de que intervienen dos tablas, solo se requiere una instruccion y sqlserver se encarga de hacer el traspaso de registros
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

como usar sentencias SQL en delphi

Publicado por many (25 intervenciones) el 10/03/2018 16:05:17
Muy buenos días mis amigos de este prestigioso foro.

Caso cerrado y gracias a todos:

MODULO.adoquery1.Close;
MODULO.adoquery1.SQL.Clear;
MODULO.adoquery1.SQL.Add('insert into detalle select * from dettem');
MODULO.adoquery1.SQL.Add('where clave_caja =' + id_claveCaja);//suponiendo que id_claveCaja es una variable tipo string con la clave de la caja que vas a mover
MODULO.adoquery1.ExecSQL;//

Saludo.
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
Revisar política de publicidad