FoxPro/Visual FoxPro - Variable Memo

   
Vista:

Variable Memo

Publicado por Ivan(Perú) (13 intervenciones) el 27/05/2009 18:22:54
Quisiera saber como creo una Variable de tipo Memo
Quiero almacenar una consulta SQL alli y las varibales de cadena no soportan tantos caracteres
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

RE:Variable Memo

Publicado por es_binario (757 intervenciones) el 27/05/2009 18:39:25
Con que finalidad, podrias ser mas claro y por ejemplo tienes a la mano los cursores

Digamos que tienes un campo memo "Ruta" y quieres saber cual es el conteido seria asi

Select Ruta from configuracion where usuario = usuario_actual Into cursor MiVarmemo

Ahora si quieres saber cual es el contenido de ruta solo haces esto

Edit1.Value = MiVarmemo.Ruta
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:Variable Memo

Publicado por Ivan(Perú) (13 intervenciones) el 27/05/2009 18:50:14
Estoy creado consultas SQL donde el usuario puede elegir la cantidad de campos por los que va a consultar, si agrupa o no agrupa, y si ordena y porque campo o campos ordena.

El resultado de todo eso lo concateno en una cadena y armo la consulta.
La ejecuto con macrosustitucion (&).

Pero cuando la longitud de la cadena es demasiado larga me da error.

He probado con consultas cortas y si funciona.

Se me vino a la Idea usar el tipo de dato Memo, no se exista.

Tambien pense crear un curso con un campo Memo y usarlo desde alli, creo que con una varible bastaría tipo Memo bastaria si eso existe?.

Gracias por la Ayuda.
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:Variable Memo

Publicado por enrique (1041 intervenciones) el 27/05/2009 19:34:47
Si estas trabajando con VFP6 puede ser que el problema sea que tenes demasiados condiciones o campos en tu consulta y no el tamaño de la variable.

Entra a Capacidades del sistema en el Help y veras los tamaños maximos.
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:Variable Memo

Publicado por es_binario (757 intervenciones) el 27/05/2009 19:41:52
Tambien tienes la opcion Text endText

por ejemplo:

TEXT TO vee_exist TEXTMERGE noshow
Select clave, p_publico, iva, existencia, tipo_camb
from productos where clave = ?codigo_de_barra
ENDTEXT

y las cadenas declaralas como string
digamos

Local Consulta as string

Otra opcion

Consulta = "Select " +;
Alltrim( Thisform.ComboCampo1.Value) +;
Alltrim( Thisform.ComboCampo1.Value) +;
" from "+;
Alltrim(Thisform.ComboTablaElegida)

En fin solo es una idea usando el + para unir cadenas y considerando espacios, puedes crear consultas diseñadas por el usuario usando combos y el interactivechange del combo

y mejorar el codigo usando la Do case end case

Saludos, por el tamaño no te preocupes las variables pueden con mucho mas de 256 caracters
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:Variable Memo

Publicado por Ivan(Perú) (13 intervenciones) el 27/05/2009 20:02:38
Lo Resolvi
Cuando me dijeron que no era problema de la longitud de la varible probe en la ventana de comandos y efectivamente la consulta funcionaba y entonces analice el codigo y encontre el problema.

Era un probema de macrosutitución.

Lo dejo aqui para que ayude a los demas.

m.SelectFromTabla ="SELECT p.pro_id,p.pro_ncomer,p.pro_precos,"+;
"p.pro_prevta,p.pro_stockg,p.ume_id,"+;
"o.mod_descr,s.sfa_descr,p.pro_fracc,"+;
"p.pro_pserie,p.pro_ngstoc,p.pro_esensa,"+;
"p.pro_esps3o,p.pro_esserv,p.pro_esmerm "+;
"FROM bbdd!modelo o INNER JOIN bbdd!producto p "+;
"ON o.mod_id=p.mod_id "+;
"INNER JOIN bbdd!subfamilia s ON s.sfa_id=p.sfa_id "

*m.c="&SelectFromTabla" El error estuvo aquiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
lcSql = m.c + " INTO CURSOR curdummy"
&lcSql

La Solución
.......
lcSql = m.SelectFromTabla + " INTO CURSOR curdummy"
&lcSql

Pregunta: (Lo dejo para el posterior analisis)
¿Por qué funciona con otras consultas?

Muchas Gracias a Amigo(s)
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:Variable Memo

Publicado por enrique (1041 intervenciones) el 27/05/2009 18:45:17
las variables soportan hasta 16.700.000 aproximadamente, ahora bien si te refieres a los Campos de tipo Memo ,
1.- USE TU_ARCHIVO EXCLUSIVE
2.- MODIFY STRUCTURE
3.- AGREGA UN CAMPO y en TYPE selecciona MEMO

listo
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:Variable Memo

Publicado por Ivan(Perú) (13 intervenciones) el 27/05/2009 19:00:01
¿Cuántos caracteres como máximo puede soportar una varibales tipo char/String?
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 Mauricio

Variable Memo

Publicado por Mauricio (1368 intervenciones) el 27/05/2009 23:23:28
Ivan, en la ayuda de VFP podrias profundizar un poco mas con un poco de empeño:
En VFP, no tienes que asignar el tipo de datos........

Cuando almacena un valor en una variable y la variable no existe, Visual FoxPro la declara implícitamente. Los lenguajes que requieren una declaración explícita de variables generarán un error.

En Visual FoxPro, no se asigna un tipo de datos a una variable (aunque es recomendable que asigne a las variables nombres con un prefijo que indique el tipo de datos para el que se van a usar). Otros lenguajes requieren que asigne un tipo de datos a una variable cuando la declare.
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:Variable Memo

Publicado por Ivan(Perú) (13 intervenciones) el 28/05/2009 03:42:46
¡Eso ya lo sé!
Pero no mencionas que el tipo de dato inicial que le asignes es el que tendra la variable.

Yo queria iniciar la variable con un tipo de dato especifico. Algo como esto.
varfecha = {//}
varlogica = .f.
varMemo = (Dato tipo Memo inicial)

Chequea la solución que le di en el anterior post.
Gracias por todo

Otra cosa, no insinues que no le pongo empeño por favor.
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:Variable Memo

Publicado por enrique (1041 intervenciones) el 28/05/2009 16:55:03
defini una variable en tu formulario tipo caracter en blanco
varMemo = ""
luego pone un control editbox en tu formulario y en el controlsource del editbox asignale la variable "varMemo" y listo
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:Variable Memo

Publicado por Ivan (13 intervenciones) el 28/05/2009 21:33:26
Eso ya lo se
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:Variable Memo

Publicado por enrique (1041 intervenciones) el 29/05/2009 14:11:33
Si eso ya lo sabes, entonces no entiendo cual es tu problema
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:Variable Memo

Publicado por Francisco (1 intervención) el 30/05/2009 20:33:18
Su problema es que vfp soporta variables de hasta 255 caracteres. Ejemplo 1:

lcVar='select * from table where id = 1'
lnCon=sqlstringconnect()
sqlexec(lnCon, lcVar)
sqldisconnect()

hasta aqui no hay problema, la connsulta deberia realizarse con exito.

Pero si lcVar exediese los 255 caracteres como suele suceder cuando se envia un string para insertar un campo en sql, la rutina es inservible.

Para armar un string que exceda los 255 caracteres, hay varias formas.

Ej1.
lcVar1=(Cadena de 100 caracteres)
lcvar2=(cadena de 100 caracteres)
lcVar3=(cadena de 100 caracteres)

sqlexec(lcCon, lcVar1+lcVar2+lcVar3)

esto es totalmente valido.

O podes enviar usar un text endtext.

ej2.

store fcreate(text.sql) to _text
text
lineas de comando
endtext
sqlexec(lnCon, filetostr(text.sql))

Para evitar peleas, si no estamos verdaderamente convencidos de que nuestra respuesta puede ayudar al otro, no respondais. Asi tambien las preguntas deberian formularse mejor.
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:Variable Memo

Publicado por Resuelto (13 intervenciones) el 12/06/2009 23:45:04
Muchas gracias a todos por la ayuda.
Gracias a ustedes ya lo he solucionado y lo comente el mismo dia que hice la consulta.
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