FoxPro/Visual FoxPro - Insertar de un grid y textos a una tabla mediante sql

 
Vista:

Insertar de un grid y textos a una tabla mediante sql

Publicado por Rafael Valdez (10 intervenciones) el 29/02/2016 18:50:20
Buenos dias primero que nada,

Actualmente estoy modificando una aplicacion que he desarrollado y estoy cambiando el metodo de guardar por uno mas eficaz y rapido, anteriormente usaba el comando SCAN para ir guardando la informacion que contenia un grid y almacenar la en una tabla pero ahora quiero hacerlo mediante SQL ya que es mas rapido. El codigo que uso es:

Sele Xfaltantes &&siendo mi tabla temporal que muestra la informacion en el grid.
Scan
Sele faltantes &&siendo mi tabla fisica en la base de datos
append blank
repl numero with thisform.text1.value <---campos txtbox
repl msta with xfaltantes.msta <--campos de tabla temporal
repl banco with thisform.text4.value <----campos txtbox
repl voladura with thisform.text5.value <---campos txtbox
repl zona with thisform.text6.value <---campos txtbox
ends

Mi pregunta es, como puedo INSERTAR toda esa informacion con una simple consulta SQL ??

Les recuerdo que la tabla XFALTANTES puede tener X's registros y quiero almacenar todos los registros que contiene la tabla acompañados de la misma informacion de numero, banco, voladura y zona.

Sin mas por el momento espero y me puedan ayudar.

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

Insertar de un grid y textos a una tabla mediante sql

Publicado por Cesar Diez Canseco (65 intervenciones) el 29/02/2016 22:01:43
Lo puedes hacer con INSERT INTO

Sintaxis:
INSERT INTO tutabla(campo1,campo2...);
VALUES(valor1,valor2)

sele Xfaltantes
SCAN
INSERT INTO faltantes(campo1,campo2);
VALUES(Xfaltantes.campo1,Xfaltantes.campo2)
ENDSCAN
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

Insertar de un grid y textos a una tabla mediante sql

Publicado por Rafael Valdez (10 intervenciones) el 29/02/2016 22:09:00
Quiero quitar el SCAN para ganar velocidad al momento de guardar, esto porque son varias tablas las que se guardan y es un proceso tardado, existira alguna otra manera ?

Gracias por tu respuesta.
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Insertar de un grid y textos a una tabla mediante sql

Publicado por Fidel José (657 intervenciones) el 29/02/2016 22:48:51
El problema es que tu información proviene de elementos de la interfaz (al menos, en la parte que se ve).
Como dijo Cesar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT xFaltantes
SCAN
INSERT INTO faltantes ;
	(Numero,;
	Msta,;
	Banco,;
	Voladura,;
	Zona);
VALUES ;
	(thisform.text1.value,;
	xfaltantes.msta,;
	thisform.text4.value,;
	thisform.text5.value,;
	thisform.text6.value )
 
ENDSCAN
Respecto de tu versión actual te digo 3 cosas:
1) Escribir la versión mínima de comandos y funciones solo aporta confusión al que lee el código.

2) Tu comando se vuelve lento porque usas repetidamente el comando REPLACE, lo que obliga a VFP a testear el estado de bloqueo para escribir cada campo, mientras que podrías poner un solor REPLACE por Registro y usar la continuidad ( ";" chr(59)).
También resulta relativamente lento este with Thisform.TExtx.Value

3) Resulta un tanto difícil entender la utilidad de ejemplo que pones, donde de la tabla sobre la que se hace SCAN tomas un solo dato y los demás son constantes (text1.Value, text5.value , .text6.value ). O, Viendolo de otro modo, si xFaltante tiene un solo registro, no se entiende para qué el SCAN.
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