FoxPro/Visual FoxPro - Problemita con la grid y el alias

 
Vista:
sin imagen de perfil
Val: 139
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Problemita con la grid y el alias

Publicado por roberto (51 intervenciones) el 19/01/2020 13:49:27
En mi proceso de aprendizaje, me tope con un programita educativo muy sencillo pero al adaptarlo a mis necesidades comenzaron los problemas

Es una grilla que se conecta a una tabla llamada prueba y despliega el contenido de esta. El original funciona perfect, pero al cambiar el nombre y los campos de la tabla a la que necesito me dice que el alias no existe.

Lo único que elimine fue la creación de la tabla prueba del ejemplo y cambie el nombre de la tabla orininal por la que yo necesito.
ahi va rl codigo original:


en el metodo Load del from:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SET SAFETY OFF
SET TALK OFF ff
SET scor off
clear
CREATE TABLE prueba FREE (codigo c(4),concepto c(25),cant n(4),precio n(8,2))
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0001","Cemento Gris",10,5000)
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0002","Cemento Blanco",6,5500)
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0003","Arena",2,3000)
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0004","Martillo",1,2000)
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0005","Alicate 3 ",1,1000)
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0006","Pintura Blanca",1,5000)
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0007","Pintura Fondo Gris",1,4000)
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0008","Brocha Grande",2,5000)
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0009","Pala",1,5000)
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0010","Cal",3,1400)

elimine la creaccion y quedo asi
1
2
3
4
SET SAFETY OFF
SET TALK OFF ff
SET scor off
clear

en el evento Init
1
2
3
4
5
6
7
thisform.grid1.Column3.Alignment = 2
thisform.grid1.Column4.Alignment = 1
thisform.grid1.RecordSource =""
thisform.grid1.RecordSourceType = 1
SELECT prueba
GO top
thisform.grid1.RecordSource =prueba.codigo

cambie los nombre prueba por dethoj quedando :
1
2
3
4
5
6
7
thisform.grid1.Column3.Alignment = 2
thisform.grid1.Column4.Alignment = 1
thisform.grid1.RecordSource =""
thisform.grid1.RecordSourceType = 1
SELECT dethoj
GO top
thisform.grid1.RecordSource =dethoj.numero

El Recorsourse de la grilla lo cambie de prueba a dethoj

y por ultimo en cada Controlsourse de text de cada columna reemplace la referencia a los campos de :

prueba.codigo a dethoj.factura
prueba.concepto a dethoj.cc
prueba.cant a dethoj.factura
prueba.precio a dethoj.guia

ahora el error se produce en el init en la linea donde se hace el select dethoj.

he repasado y revisado y no encuentro nada que falte

se agradece cualquier aporte.



error-2
error-1
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 Mauricio Antonio
Val: 598
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Problemita con la grid y el alias

Publicado por Mauricio Antonio (1517 intervenciones) el 20/01/2020 14:15:35
Roberto, No es solo copiar y pegar, tienes que respetar la sintaxis:
THISFORM.Grid1.RecordSource = "dethor" entre comillas y sin ningun campo, ahora, no se ve por donde abres la tabla dethor.
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: 139
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Problemita con la grid y el alias

Publicado por roberto (51 intervenciones) el 22/01/2020 00:06:12
Hice los cambio y no me funciona.

Realice una prueba mas básica que y el resultado no lo entiendo porque cuando el form se activa las grillas muestran el contenido de las tablas pero después de ejecutar el botón copia que lo único que hace es eliminar el contenido de una tabla y después copiar el de la primera, las grillas quedan en blanco.

Acá dejo el antes y el después de las grillas y el código del botón copiar para ver si me pueden ayudar.

El RecordSourceType de ambas tablas es cero

Boton Copia
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CLOSE TABLE
SET DELETED on
SELECT 1
USE auxhoj
zap
SELECT 2
USE dethoj
DO WHILE .not.eof()
	numero_p=numero
	factura_p=factura
	guia_p=guia
	SELECT 1
	APPEND BLANK
	REPLACE numero WITH numero_p
	REPLACE factura WITH factura_p
	REPLACE guia WITH guia_p
	SELECT 2
	SKIP
ENDDO
THISFORM.GRID2.REFRESH()

Otro detalle importante, en el data session aparecen dos copias de las tablas originales con el nombre D y C

despues
datasession
antes
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.442
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Problemita con la grid y el alias

Publicado por Fidel José (640 intervenciones) el 24/01/2020 22:35:04
Hola Roberto
Pienso que la complejidad de un control grid merece una interpretación más afinada de su significado y de su utilidad, pero también del manejo de objetos y referencias de objeto.

En primer lugar, la configuración de cualquier control grid se puede estandarizar. Puede ser un trabajo un poco largo, pero rendirá sus frutos, ya que te evitará renegar con cosas que no valen la pena.
De esto se deduce automáticamente, que la configuración del grid debe estar en un método del formulario. En ningún caso tienes que tocar los objetos del grid, ya que éstos objetos desaparecen rápidamente. Todo lo contrario, para comenzar a configurar un control grid, lo mejor es:
thisform.Grid.ColumnCount = -1 && elimina todas las columnas
thisform.Grid.RecordSource = "" && elimina cualquier referencia a tablas que se hayan pegado automáticamente.

En segundo lugar, te tiro un ejemplo en prg (ver adjunto config_grid.zip), de cómo se puede separar lo que es preparatoria de la configuración de la configuración misma.
En el adjunto, todo lo que hace a la preparación está en el "PROCEDURE create_grid_Define".
Y lo que se refirere a la creación y configuración del control depende de "PROCEDURE create_Grid_create"
Los otros procedures se necesitan para el procedure que los llama (Show_Error, Det_mask, create_Grid_WidthGrid)

En PROCEDURE create_grid_Define deberás tomar alguna tabla que tengas creada y reemplazar los valores correspondientes a:
1
2
3
4
5
ADDPROPERTY(loGrid,"cursor_name","curclientes")								&& Nombre del cursor o tabla que se mostrará
	ADDPROPERTY(loGrid,"List_column","nombre|cuit|idclien|ciudad|Monto|Memorias|Incluye")	&& campos del cursor que se quiere mostrar
	ADDPROPERTY(loGrid,"List_Header","Cliente|Cuit|Id_|Ciudad|Crédito|Observa|Inc")		&& Header de los campos mostrados
	ADDPROPERTY(loGrid,"List_Width","200|92|60|180|90|120|24")						&& Ancho concedido a los Campos
	ADDPROPERTY(loGrid,"List_Align","0|0|0|0|2|0|2")								&& Align del Header

Lo demás lo puedes ir reemplazando para adpatarlo a tu gusto y tus necesidades.
Se pueden agregar más propiedades de configuración, pero esto no es escencial en principio.
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