FoxPro/Visual FoxPro - una segunda consulta SQL a partir de un Cursor y duda fecha

 
Vista:

una segunda consulta SQL a partir de un Cursor y duda fecha

Publicado por Gerardo (2 intervenciones) el 14/10/2017 02:22:34
Buenas tardes pudieran apoyarme con una duda que tengo, no he manejado FoxPro pero por azares del destino tengo que hacer, les comparto parte del codigo

1
2
3
4
5
6
7
8
Select CRD *** Este es un Cursor de venta global
Go Top
	Do While Not EOF()
       PutS(LFH,"LineaProducto|"+&AQUIDEBOMETERELDATOCONSULTADODELAOTRATABLA) &&
		FPutS(LFH,"NoIdentificacion|"+CRD.CvePro+")
FPutS(LFH,"---------------------------------------------------")
		Skip +1
	EndDo

el detalle es que tengo que generar una nueva consulta a la segunda tabla apartir del valor de CRD.CvePro, y no encuentro como pues siempre termino con errores y sin esa linea en el archivo txt.

Y abusando otra pregunta como puedo obtener una fecha del sistema y conformarla del siguiente modo
2017-10-13T19:27:50, he probado con TTOC pero me hace falta meter la T enmedio y con CTOC no me permitio solo la fecha.

¿pudieran apoyarme?

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
Imágen de perfil de Leonardo Daniel A.
Val: 1.115
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

una segunda consulta SQL a partir de un Cursor y duda fecha

Publicado por Leonardo Daniel A. (505 intervenciones) el 14/10/2017 03:38:47
Hola, es facil....

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT CRD &&  Este es un Cursor de venta global
 
SELECT 99
USE productos
INDEX ON  cvepro TO X   && si no tiene indice estructural CDX escoger una de las 2 opciones
SET ORDER TO cvepro  &&  si tiene indice estructural CDX
 
SELECT 1
GO TOP
SCAN
  _nomprod = ""
  IF SEEK( crd.cvepro, 'productos')
      _nomprod = productos.nombre
  END IF
  FPutS(LFH,"LineaProducto|" + _nomprod)
  FPutS(LFH,"NoIdentificacion|"+CRD.CvePro)
  FPutS(LFH,"---------------------------------------------------")
ENDSCAN


Para la fecha, debes cambiar el formato de la fecha y activar los 4 digitos del año

1
2
3
4
5
6
7
8
9
SET CENTURY ON
SET DATE TO YMD
 
_fecha = DATE()   && fecha actual
_miFecha = ""
 
miFecha = CHRTRAN(miFecha, '/','-')  && cambiamos la diagonal por el guion
miFecha  = CHRTRAN(miFecha, ' ','T')  && cambiamos los espacios y ponemos una T
miFecha  = SUBSTR(miFecha,1,19)  && eliminar la ultima T y AM o PM
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

una segunda consulta SQL a partir de un Cursor y duda fecha

Publicado por Gerardo (2 intervenciones) el 14/10/2017 06:05:54
Agradezco mucho tu apoyo Leonardo, ya pasa el dato que requiero aunque se me cicla y marca error con el index, ¿podrías explicarme como funciona este fragmento de codigo? realmente este es mi primer contacto con Visual foxpro tuve que entrar de emergencia porque ya no esta el anterior programador y he estado tratando de entender, reutilizar y ajustar el codigo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Select CRD
 
	SELECT 99
	Use "..\Datos\dbt catprodu.dbf" in 0 Again Alias PRDU Shared
      INDEX ON  ereal36 TO codigosat.idx   && si no tiene indice estructural CDX escoger una de las 2 opciones
      SET ORDER TO ereal36  &&  si tiene indice estructural CDX
	Select 1
 
	Go top
	Scan
 
	Linea = ""
  IF SEEK( crd.cvepro, 'PRDU')
      Linea = PRDU.ereal36
  ENDIF
		FPutS(LFH,"LineaProducto|"+Linea)
		FPutS(LFH,"NoIdentificacion|"+CRD.CvePro)
		FPutS(LFH,"Cantidad|"+AllT(Str(CRD.Cantidad))) && Cantidad del producto
		FPutS(LFH,"---------------------------------------------------")
		Skip +1
	ENDSCAN

tambien cuando mando por boton a generar el txt, me esta pidiendo que ubique la base de datos, misma que ya meti en el USE pero me pide buscarla de nuevo, ¿A que se debera?

De antemano muchas gracias por tu apoyo!

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
Imágen de perfil de Leonardo Daniel A.
Val: 1.115
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

una segunda consulta SQL a partir de un Cursor y duda fecha

Publicado por Leonardo Daniel A. (505 intervenciones) el 14/10/2017 06:26:57
Hola los indices.... son independientes archivos IDX y no son dependientrs de la tabla.. los puedes borrar y se crean para usarlos momentaneamente......

use tabla
index Campo to miIndice

Los indices estructurales CDX se contienen en un archivo llamado igual a la tabla, y tienen extencion CDX y puede haber varios indices ahi, y se usan para cuando necesitss estar accesando a la informacion por tal campo.... y cualquier modificacion al campo y tenga un indice estructural se actualiza el indice automanticamente....

para crear un indice estructural, solo se hace una vez

index on Campo1 TAG MiIndice1 && lo llame indice1 para el campo
index on campo1+campo2 tag Indice2 && indice por 2 columnas, por ejemplo si tuvieras Estado y Ciudad

y cuando lo necesitas usar, hay 2 formas

use Tabla order tag miIndice

o

use Tabla
set order to miIndice


ahh por cierto los && se usan para poner comentarios a un lado de las instrucciones
y se usa * para cuando son en linea
*** este es un comentasrio



y con respecto al error.... donde estas abriendo CRD ?

veo un select crd pero no veo donde la abres con use

el SELECT 1 o SELECT A es para abrir areas de trabajo y ahi abres una tabla, si quieres abrir otra tabla sin cerrar esa... haces en mi ejemplo te puse un SELECT 99 y despues el use...... puse 99 para asegurarme de no cerrar alguna abierta en otra area, pero pudo haber sido un SELECT 2

si no has abierto CRD deberias hacer

SELECT 1
USE CRD

SELECT 99 o SELECT 2
USE PRDU

el select tambien se usa para cambiarte de tabla, por ejemplo si estas en el area 1 y necesitas cambiarte a la 2
usarias un SELECT 2 pero es poco intuitivo, y tendrias que ir a buscar que tabla se abre en esa area por eso se usa SELECT PRDU y te cambia a usar esta tabla sin saber en que area esta


te recomiendo veas cursos de Visual FoxPro en youtube
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

una segunda consulta SQL a partir de un Cursor y duda fecha

Publicado por Gerardo (1 intervención) el 14/10/2017 07:09:41
Gracias me haz dado una visión mas amplia te lo agradezco de de verdad, en cuanto al CRD lo crearon como un Cursor en otro objeto del formulario, se inicializa antes que todo, y solo se mando a llamar.
hare la prueba con los index como me comentas y ya con el panorama mas amplio buscare los tutoriales en youtube 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
Imágen de perfil de Leonardo Daniel A.
Val: 1.115
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

una segunda consulta SQL a partir de un Cursor y duda fecha

Publicado por Leonardo Daniel A. (505 intervenciones) el 16/10/2017 17:36:28
No uses skip... el scan solo cambia de registro, el skip se usa en el do while !eof()
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