Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.
Respondiendo para VFP6 y FoxPro 2
Enviado por Manuel el día 5 de mayo de 2005
Hola amigos. Espero poder responder a sus preguntas, en lo referente a VFP6 y FoxPro DOS. Sé que son versiones un tanto desfasadas. Sin embargo, continúan generando interrogantes, porque aún están en uso. Cuando hagan una pregunta, numérenla según la última para hacer la correcta referencia.
OJO: Si ven una pregunta que yo no he contestado y tienen la respuesta, no duden en hacer su aporte. Por otro lado, si no soy capaz de responder, pueden preguntar a alguien más.
NOTA: Si en algún momento mi tiempo se limita y ya no puedo responder, daré el aviso para que no se pierdan sus preguntas en un vacío sin respuestas.
Recuerden que estamos para ayudarnos, y yo no lo sé todo. Sólo trato de compartir lo poco que sé.
Saludos.
Manuel feliz día, tengo un aplicativo VisualFox 6.0 al tratar de ejecutar el archivo.exe devulve el mensaje \"Archivo.Exe no es un aplicativo Win32 Valida\", que puedo hacer. le agradezco si me puede colaborar, un amigo Miguel Angel
Re: umapedro: "Archivo.Exe no es un aplicativo Win32 Valida"
Enviado por Manuel el día 12 de junio de 2006
A menudo, el problema surge cuando en el proyecto se ha colocado información referente a la versión. En el proyecto, haz clic en "Generar..." y luego al botón "Versión". Quítale la información que hayas puesto y prueba de nuevo generando y ejecutando tu Archivo.EXE
Enviado por aledelavega el día 18 de abril de 2008
hola espero que me puedas ayudar. mira tengo un grid en un formulario de visualfox 6.0 y quiero que en este grid me aparescan los datos de dos tablas diferentes pero solo aquellos registros que existen en ambas tablas, hasta aorita no se mas que en el grid en click derecho y en generador, indicar los campos de una tabla para que aparescan. la cuestion es como hascer para que aparescan pero de dos tablas diferentes. espero me mpuedas ayudar de antemano muchas gracias.
escribeme a don_jose37@hotmail.com
gracias
(P1) Gracias, Manuel. Tengo un formulario con grids y combos en VFP6, pero a veces cuando estoy trabajando, me marca el error "Incompatibilidad entre el tipo de operador y el tipo de operando". El problema es que al ver en el "depurador", el error está en la línea de "thisform.refresh". ¿Qué puede ser?
Generalmente, ese mensaje aparece cuando VFP coloca los datos en el grid. Revisa los "SET FILTER" que hayas hecho. Puede ser que haya una expresión no válida al comparar dos valores, especialmente revisa que no hayas puesto THIS.VALUE al filtrar en algún combo o caja de texto. Mejor hazlo así: SET FILTER TO TuCampo=Thisform.TuControl.Value
Enviado por informatic_elena el día 25 de febrero de 2006
Tngo 2 cuadros de texto y quiero jalar el primer caracter de cada uno de ellos hacia una sola caja de texto.
solo se que puedo usar el substr y especificar la caja y el caracter que deseeo jalar, ahora no se como hacerle para decirle que quiero jale las dos cajas.
auxilio! Tengo un ejecutable en FoxPro 2.0, pero al ejecutarlo en el explorador de Windows de mi PC, me dice que no la "cannot locate dsired version of FoxPro". Tengo Window98.
SET STATUS BAR ON activa la barra de estado y ...OFF la desactiva.
Puedes poner mensajes personalizados en la barra, de esta forma:
SET MESSAGE TO 'Hola Este es mi mensaje"
hola manuel tengo un problema parecido alde llule por eso te respndo aca yo ya saque el subtotal manejando los datos de los text de la grilla, en la opcion got focus, y tengo problemas para calcular e total tb en una caja de texto, probe tu programacion en el gotfocus de los text de la grilla y me hace un calculo, en el primer registro bien, pero a partir del segundo es como q me lo divide
desde ya gracias por la ayuda q me puedas brindar
saludos cordiales
pablo
hola, tengo que capturar datos de unos libros de excel que contienen
varias paginas cada uno. mi pregunta es la siguiente: ¿como puedo moverme entre
las distintas paginas del libro si no se como se llaman? ¿como se si he llegado
a la ultima pagina del libro? ¿como hago para situarme en la primera? muchas
gracias
HOLA, TENGO UN REPORTE DONDE A PARTE DE IMPRIMIR UN DETALLE, NECESITO IMPRIMIR UNOS COMENTARIOS QUE POR LO GENERAL SON DE VARIOS REGISTROS, O SEA ES COMO SI TUVIERA QUE IMPRIMIR 2 DETALLES, NO SE COMO HACERLO.
Primero, debes establecer si el detalle adicional está en la misma tabla o si es de otra tabla.
1. Si son de la misma tabla, debemos ver si están en el mismo registro de lo que normalmente quieres imprimir. Si es así, puedes imprimir el detalle en otra columna a la par, simplemente colocando una caja de texto en tu informe, haciendo referencia al campo del detalle. por ejemplo:
Nombre Apellidos NºdeHijos(detalle)
2. Si son de otra tabla, ¿tienen esos registros relación con cad registro de la tabla principal? Puedes crear una relación desde la tambla inicial hacia la secundaria en el campo que las vincula. Y de igual forma, hacer un campo a la par.
3. Si son datos extra de otra tabla, dependiendo del número de datos en el detalle, puedes crear una arreglo o una matriz para capturar cada dato, por ejemplo un valor por persona. Mira este ejemplo:
Dimension matriz(10,2)
For I=1 to 10
matriz(i,1)=Space(30)
matriz(i,2)=0.00
Endfor
Select tuTabla2
i=0
Scan
i=i+1
if i>9
matriz(10,1)='Otros...'
matriz(10,2)=TuTabla2.dato2
else
matriz(i,1)=TuTabla2.dato1
matriz(i,2)=TuTabla2.dato2
Endif
Endscan
Entonces, en la parte "Resumen" de tu informe podrías poner el detalle de la matriz específicamente:
matriz(1,1) matriz(1,2) matriz(1,3), etc.
4. Si los datos son demasiados, podrías necesitar hacer un reporte sólo por ellos, y llamarlo inmediatamente después del reporte principal. Así:
Report Form TuReporte TO PRINTER NOCONSOLE
Report Form TuDetalle TO PRINTER NOCONSOLE
Bueno tengo un grid, donde le paso información por medio de codigo, y la primera vez me actualiza todo bien, pero tengo un boton para ir a otro registro, y si hago algun cambio, no me lo actualiza, o sea, es una factura y quiero que me actualice la ultima columna que seria el subtotal con el precio * cantidad y no me lo hace.
1. En el Grid, supongo que tienes RecordSource=<TuTabla>
2. Y RecordSourceType=1 - alias
3. Entonces, cada columna tiene como ControlSource el nombre de los campos de tu tabla.
4. En la ventana de propiedades puedes buscar el "grid", y verás que de él dependen unos objetos que son Column1, Column2, etc. y éstos a su vez tienen Header1 y Text1.
5. Verifica cuál "column" es la que corresponde al subtotal (precio*cantidad).
6. No es necesario que el subtotal esté como campo en tu tabla.
7. Así que en la columna del subtotal, en el grid, ponle en la propiedad ControlSource=precio*cantidad
8. Y cuando hagas un cambio, recuerda hacer Thisform.Refresh
Gracias me funciono de maravillas, pero tambien tenia problemas con el subtotal y total de todo el grid, o sea el total de la factura, en este caso como haria
Re: Re: Re: Manuel ayudame con un problema en un grid
Enviado por Manuel el día 23 de mayo de 2005
1. Seguramente para el Total tienes una Caja de Texto.
2. Así que, después de cada movimiento que ingreses o modifiques, es decir en el click del Botón que mencionaste, puedes poner lo siguiente:
Select TuTabla
TuCom=TuCampoNumFact
SUM precio*cantidad TO Thisform.TuTextodeTotal.Value FOR TuCampoNumFact=TuCom
En este caso TuCampoNumFact es es campo del número de factura. Eso es para que sólo te sume los valores de la factura que está en pantalla.
Re: Re: Re: Re: Manuel ayudame con un problema en un grid
Enviado por psv125 el día 14 de noviembre de 2007
hola manuel tengo un problema parecido alde llule por eso te respndo aca yo ya saque el subtotal manejando los datos de los text de la grilla, en la opcion got focus, y tengo problemas para calcular e total tb en una caja de texto, probe tu programacion en el gotfocus de los text de la grilla y me hace un calculo, en el primer registro bien, pero a partir del segundo es como q me lo divide
desde ya gracias por la ayuda q me puedas brindar
saludos cordiales
pablo
Tengo una aplicacion que genera reportes de ventas y a veces el monto total se queda solo en la última página, quisiera que el usuaro pudiera modificar los margenes del reporte o en todo caso ajutar la escala para que no ocurra este error, ¿me puedes ayudar?
La ubicación de los totales no depende tanto de los márgenes del papel sino de cómo lo configuramos al momento del diseño del reporte.
Si recuerdas, el informe tiene dos apartados en la parte de abajo: Resumen y Pie de Página.
Lo que pone en "Pie de página", sale en todas las páginas. Lo que pongas en "Resumen" saldrá sólo al final del informe, es decir en la última página.
Si la idea es ajustar el papel en el momento, puedes elegir "Configurar página" en el momento de estar diseñando tu informa, y elegir la impresora, para que puedas elegir el tipo de papel como de tamaño "personalizado".
Entiendo lo de resumen, lo que ocurre es que a veces por ejemplo se han producido 42 ventas, entonces, por coincidencia esas 42 ventas caben exactamente en una pagina, entonces el total de todas maneras saldrá en la siguiente página y saldrá arriba y se ve mal, lo que quisiera es que el usuario final de mi aplicación pueda modificar los márgenes, o como ocurre en el EXCEL, si no cabe un cuadro, ajustas la escala y listo. ¿pudes ayudarme?
Encontré un link donde se habla del ajuste de líneas de impresión... Yo no lo he probado, pero talvez ahí esté tu caso. Cuando llegues a la página, presiona Ctrl+F y al salirte un cuadro, escribe _PADV y le das Aceptar para que te lleve directamente al tema. http://javascript.programacion.net/foros/33/msg/11...
Yo tengo el mismo problema pero aqui se centran en resolverlo desde DOS. Siempre me sale el total en otra pagina sin encabezado cuando cohincide que la pagina anterior esta llena.... NO LO HE PODIDO RESOLVER
Tengo un problema con los cuadros de lista despegable. El problema que tengo es que me tienen que mostrar el registro correspondiente según una tabla primaria; y lo que me muestra es el registro siguiente al que debería de mostrar. Ya he probado de todo he quitado y vuelto a poner todo, pero sigue funcionando mal y sólo me pasa con algunos. Yo supongo que el error debe de estar el la relación de las tablas, pero no se que es lo que debo cambiar. Lo que yo he puesto es lo siguiente:
En el entorno de datos del formulario tengo las tablas clientes y Tipo_clientes
Clientes: codigo, nombre, domicilio,….tipo_cli,…
Tipo_clientes: tipo_cli, descripcion
La tabla Clientes esta ordenada por codigo y la tabla Tipo_clientes esta sin ordenar. Las dos tablas están sin relacionar en el entorno de datos.
Luego en el control lista despegable las propiedades que puse son las siguientes:
ControlSource: Clientes.tipo_cli
RowSource: Tipo_clientes.descripcion
RowSourceType: 6-Campos (probé con 2-Alias y 3-SQL, pero tampoco funciona)
Style: 2-Lista despegable
¿Tienes idea de que tengo mal?
Otra consultita ¿hay alguna funcion para contar los registros de un grid?
Muchas gracias.
Romina
Debe haber correspondencia en el campo común de ambas tablas. El campo del "ControlSource" debe corresponderse con el "Value".
Así, puedes hacer que tu combo tenga dos columnas, o que refleje dos campos. Uno será para que el usuario lo vea (en este caso, tipo_clientes.descripcion) y el otro para el Value (en este caso, Tipo_clientes.Tipo_cli).
En cuanto a reflejar dos columnas, bien haces con elegir RowSourceType=6-Campos, así puedes agregar con comas los demás campos en la propiedad RowSource. Así:
RowSource=Tipo_clientes.descripcion, tipo_cli
RowSourceType: 6-Campos
BOUNDCOLUMN=2
BoundColumn se refiere al número de columna que tendrá el Value, en este caso indica la segunda columna (tipo_cli).
Y no olvides que con la propiedad ColumnWidths puedes asignar el ancho de cada columna.
AHHH: Y con lo de la función que cuente los registros del grid:
Si el grid depende de datos filtrados, haces esto:
SELECT LaTablaDelGrid
COUNT TO <Variable> FOR <las condiciones del filtro>
Por ejemplo, podrías querer ver cuántos clientes tienes, simplemente haces:
Select Clientes
COUNT TO Todos
ó sólo los de tipo=1, sería así:
COUNT TO xyz FOR TIPO=1
También puedes enviar el resultado a una cja de texto, así:
COUNT TO Thisform.Text1.Value FOR domicilio="Jerusalén"
Hola...tengo unas dudas acerca de VFP 6.0, aver si tu me puedes ayudar por favor..
Necesito seleccionar un registro en una tabla, que sus diferentes campos coincidan con ese registro..
Ejemplo:
Existe una tabla de captura que tiene los siguientes campos: folio, sucursal, ciclo, tipodecliente, producto, opcional
Al hacer una consulta yo tengo sucursal, ciclo, tipodecliente en variables y necesito encontrar el folio que coincida con esas tres…
Si ya tienes esos valores en variables, puedes haces esto en el click de algún botón:
SELECT TuTabla
LOCATE FOR Sucursal=varSucursal and Ciclo=varCiclo and TipodeCliente=varTipodeCliente
IF FOUND()
___FolioHallado=Folio
___MESSAGEBOX('La información está en el folio '+FolioHallado) &&Se supone que el campo folio es de cadena
___*Si el campo folio es numérico, debes hacer STR(FolioHallado) para mostrarlo en el Messagebox().
ELSE
___MESSAGEBOX('No se halló folio con esas características')
___RETURN
ENDI
Enviado por alexander guzman el día 18 de diciembre de 2007
Hola manuel quiesiera saber si sabes como mandar un repoprte .frx a pdf (utilizando cutepdfprinter) sin que pida el nombre. mejor dicho la idea es que el usuario no tenga que escribir en el cuadro de dialogo que muestran las impresoras virtuales sino que se puedan mandar directos esos datos
Hola como estas, espero que bien, sabes tengo un problemita, cuando entro a un formulario, puedo accesar el menu, dime hay alguna forma de desactivar el menu cuando entro a un formulario, y cuando salgo volver activarlo.
Hola. Tengo un problema con un informe.
El resultado de un informe lo estoy enviando a un archivo (REPORT FORM
cInforme TO FILE cNombreArchivo), el problema existe cuando el informe
tiene mas de una página, imprime perfectamente la primera página, pero las
siguientes no, se corta cuando finaliza la primera.
Aclaro que estoy trabajando con VFP 6.
Agradeceria una respuesta.
Saludos…
¿En qué momento \"se corta\"? ¿O a qué te refieres con que \"se corta\"?, pues yo hice una prueba con un reporte de varias páginas y todos los datos se me almacenaron.
También puedes agregar la palabra ASCII, si lo deseas en forma legible, así:
REPO FORM TuReporte TO FILE TuArchivo.Ext ASCII
En un formulario abro las tablas y las relaciono al presionar un clic al mismo tiempo que llamo un segundo formulario... lo extraño es que el segundo formulario dice que no hay tablas, ¿qué puede estar pasando?
Utiliza la función DTOS() en la expresión de tu índice, algo así: DTOS(fecha)+numfactu.
Para eso, se supone que tu campo fecha es de tipo fecha y el número de factura de tipo cadena.
Hola de nuevo, espero me puedas ayudar, tengo un problemita, mira, tengo un grid, y una de las columnas es de precio, pero yo quiero que cuando alguien quiera cambiar el precio revise en una variable que tengo si tiene acceso o no, y cuando no tiene acceso pedir la clave de aquien que lo tenga, el problema es que mando a pedir con un cuadro de texto y cuando le doy enter me debe devolver el control a precio pero no lo hace.
Para enviarle el enfoque a un campo de un grid, necesitamos conocer en qué columna se encuentra.
Imagina que tu grid se llama "Grid1" y que el precio está en "Column4", entonces, deberás hacer esto:
Thisform.Grid1.Column4.Text1.Setfocus
De preferencia, este renglón no va en el "keypress" de la caja de texto donde lo llamas, sino en el "LostFocus".
Espero haberte ayudado. :)
hola yo lo estoy haciendo asi, pero cuando estoy en la columna del precio y lo voy a cambiar necesito mandar un mensaje y me lo hace y necesito mandar una editbox para que pida una clave para cambiar el precio, pero cuando me lo presenta el editbox no tiene el enfoque, y tengo que darle un click y luego escribir la clave, bueno y le doy enter y es alli donde le doy el setfocus pero no me lo manda al grid si no al inicio del encabezado de la factura.
No sé de qué forma llamas al Editbox o si está en el mismo formulario donde estás procesando la factura.
1. Si el editbox está en otro formulario, puedes lograr que tenga el enfoque inicial configurando los "TabIndex" (orden de tabulación), eso lo logras yendo al menú "Ver | Orden de Tabulación...", el momento de modificar tu formulario. Esto podría resolver para dónde se va el enfoque después de dar <Enter>
No sé dónde haces la validación del usuario. Quedaría bien en el Gotfocus o también en el When.
2. Si es en el When, puedes hacer un formulario que te devuelva el valor de aceptación o denegación, y según eso dar acceso al texto. Eso sería programamndo el Text1 del Column correspondiente. ¿Recuerdas? Para dar acceso a un control, es posible programar en el When uno o más renglones, terminando con un renglón RETURN, así: RETURN <condiciones>.. por ejemplo RETURN USUARIONIVEL=5, dará acceso sólo al usuario cuyo nivel sea 5.
Cuéntame cómo te va... y espero que puedas resolver tu caso.
Enviado por lapislaizuli el día 24 de junio de 2005
Buenas Manuel espero que me puedas ayudar, estoy haciendo una aplicación en VFP6 y no consigo que al ejecutarlo me muestre las etiquetas para poder escribirlas e imprimirlas, ya no se como indicar el codigo en el menú para poder ejecutarlas.
Saludos y muchas gracias.
Las Etiquetas trabajan en forma similar a los Informes. Así:
Para crearlas: CREATE LABEL MiEtiq.Lbx
Para modificarlas: MODIFY LABEL MiEtiq.Lbx
Para Vista previa: LABEL FORM MiEtiq.Lbx Preview
como puedo obener un reporte con informacion de 2 tablas diferentes, los campos en comun son fecha y cantidad, tengo el siguiente select y me muestra los datos de la fecha que pido pero me los muestra repetidos 3 veces cada uno , me puedes ayudar
dia=thisform.text1.value
select tabla_rex.folioauto,tabla_rex.semestre,tabla_rex.proveedor,tabla_rex.fentrada,tabla_rex.cantentra,remision.rf,remision.fentrada,remision.cantentra from tabla_rex inner join remision.fentrada on tabla_rex.fentrada = remision.fentrada where tabla_rex.fentrada=dia
1. Verifica que en el entorno de datos del reporte no tengas tablas, pues los registros que necesitas están en el cursor que generas.
2. Prueba poniendo las condiciones sólo en el WHERE e inmediatamente después de enviarlo a cursor llamas el informe. Algo así:
SELE <...> FROM tabla_rex,remision WHER tabla_rex.fentrada=remision.fentrada AND tabla_rex.fentrada=dia INTO CURS X
REPO FORM <...> PREV
3. Espero que te resulte.
Manuel:
Necesito imprimir desde una aplicación foxpro 2.6A para D.O.S. en una impresora USB. Mi plataforma es bajo windows y ejecuto la aplicación desde el escritorio de windows. Con los ejemplos que vi en el foro no lo pude solucionar, tengo conflicto sobre todo para usar el net use, ademas la printer no está remota, la uso localmente. Desde ya muchas gracias y muy buen foro
Hola Manuel, si me pudieras ayudar, tengo un grid, y hay ocaciones en que cuando hago algo, por ejemplo, estoy trabajando con una tabla temporal, y tengo un boton para eliminar registros, bueno le doy click al registro del grid que quiero eliminar, y luego le doy al boton y tengo estas instrucciones en el boton
select h
delete
pack
thisformset.rot.d.refresh
aqui me deja el grid en blanco, no me lo vuelve a dibujar,
Si lo hace pero tendria que volver a asignarle todas las propiedades de cada columna del grid, ya que me presenta las columnas sin el tamaño, ni la letra, etc., y me muestra toda la tabla en el control grid.
1. Si tu tabla temporal es fija en cuanto a estructura, revisa si algún "ControlSource" de alguna columna no te esté devolviendo un dato que no existe, por ejemplo un nombre erróneo de campoo de alias. O una expresión que devuelve error.
2. De lo contrario, establece cuáles son las propiedades adecuadas en cuanto a ControlSources, ubicación de columnas, y... creo que valdría la pena poner un trocito de programación que lo haga.
3. No sé de qué manera usas tu tabla temporal, si la creas en el momento o no, pues, también podrías tenerla siempre vacía y llenarla cuando la necesites usando APPEND FROM.
No he tenido la oportunida de probar esa impresión, sin embargo hice una prueba redirigiendo el LPT1 a una impresora compartida en la red y funcionó, aunque no USB.
Prueba lo siguiente:
0. Pon tu impresora como compartida.
1. Agrega una nueva impresora, y elige "red" (aunque sea local). Eso te llevará al entorno de red donde podrás elegir tu misma PC y tu impresora. La idea es conseguir una dirección así \\Pc\Impresor
2. Luego de agregada, vas al MSDOS y escribes NET USE LPT1: \\TuPc\TuImpresor
3. Ahora, haz una prueba enviando un DIR así:
DIR >PRN
4. Recuerda que la impresión en red puede tardar un poco.
Espero que esta idea funcione... De todos modos avísame.
Manuel:
El problemas es que cuando uso el net use me da error, por eso te aclaraba que estoy usando windows, me parece que el conflicto viene por ahí. No tengo cargados determinados drivers que me permitan usar el net use (no se cuales son los que debería cargar)
Desde ya muchas gracias de nuevo
Hola creo que tengo el mismo problema que Guillermo, Necesito imprimir desde foxpro .6 a un USB, pero mi cpu no esta en red, asi que la instrucción net use no me funciona, conoces otra forma de hacerlo.
Tienes razón. No lo había probado. Yo no tenía impresor USB, sólo tenía esos links. Así que no había tenido la oportunidad de hacer pruebas, y consideré que les podría servir. Pero hace poco tuve un impresor USB con Windows98, y no me funcionó. Así que si alguien más tiene algo que ayude... Bienvenida la sugerencia.
Tengo un grid el cual debo actualizar mediante una instruccion SQL, establezco la propiedad Recordsource type=4-Sentencia SQL, y la cadena SQL se la asigno en tiempo de ejecucion a la propiedad Recordsource. Todo funciona muy bien con una tabla normal. Sin embargo mi problema surge porque me interesa que la actualizacion sea desde una tabla temporal, es decir, un cursor. Lo intenté pero no funciona, el grid se queda vacio y ni siquiera me marca un error.
¿Crees que lo que estoy intentando sea posible?
Gracias
Saludos
Supongo que te sale más fácil crear una vista para que la uses en el entorno de datos como si fuera tabla, y así la pones en el RecordSource de tu grilla.
La expresión para crear tu vista es:
CREATE SQL VIEW tuVista AS <TuExpresiónSELECT-SQL>
Por ejemplo:
CREATE SQL VIEW Sueldos AS SELECT a.codigo,a.nombre,sum(b.sueldo) FROM empleado a,pagos b GROUP BY a.codigo
Ese comando lo ejecutarás sólo para crear la vista en tu base de datos. De ahí podrás tomarla para colocarla en tu Entorno de Datos, y luego al grid.
Gracias por tu ayuda, ahora nuevamente necesito consultar otro problema que me surgio y que no le hallo como resolver:
Es referente a un reporte de estados de cuenta, es decir con encabezado y lineas de detalle, lo tengo practicamente terminado, pero necesito añadir una columna en cada linea de detalle que me vaya indicando el saldo al aplicar cada movimiento.
Para sacar el saldo yo utilizo esta instruccion
SELECT SUM(DEBE)-SUM(HABER) SALDO FROM CUENTAS FOR FOLIO<=FOLIOACTUAL
Pero como le hago para meter el resultado de esta instruccion en cada linea de detalle del reporte?
En la ventana de diseño de tu informe, haz lo siguiente:
1. Vé al menú "Informe | Variables..."
2. En la parte "Variables", escribe "TOTDEBE" (no incluyas las comillas).
3. Donde dice "Almacenar valor", escribe "cuentas.debe" (no incluyas las comillas).
4. Marca "Liberar tras el informe"
5. En "Calcular", elige "Suma"
¡Listo! Creaste una variable que te hará el trabajo de suma acumulada.
6. Haz otra variable, llamada TOTHABER, usando cuentas.haber de la misma forma.
7. Ahora, dale "Aceptar" para salir de esa ventanita.
8. Agrega una caja de texto en tu informe, al lado de "Haber" y ponle TOTDEBE-TOTHABER sin nada más.
9. Haz una prueba, para ver resultados.
Espero haberte ayudado con esto.
Hola. Quiero saber como hago para que, al ejecutar FoxPro2 en Windows XP no sea necesario cambiar el teclado a Inglés. Quisiera poder tener mi teclado en idioma inglés siempre. Desde ya muchas gracias
Tengo XP y FoxPro 2.5b y mi teclado Español (El Salvador). Fue el que quedó con todas las teclas.
Nada he configurado en config.nt ni siquiera en autoexec.nt, y tampoco he usado el "keyb us" en el autoexec.bat
Para Windows, el idioma predeterminado es el mismo, y... no me da problemas. Dentro o fuera de Fox2.5b, el teclado funciona igual con tildes y todo.
Sólo que tenía Milenium y FoxPro. Luego instalé XP, y sigue funcionando normal.
Hola Manuel. Tengo un problema con un grid. Hago un cruce de datos entre 2 dbf y genero un tercer dbf, luego intento mostrar el resultado en un grid asociado a la tabla generada pero el grid aparece totalmente en blanco. Incluso los encabezados. Te agradeceria tu ayuda. Salu2.
1. Al decir "cruce", ¿te refieres a un SELECT... INTO TABLE ...?
2. ¿En qué momento de tu formulario generar la tercera DBF? ¿qué tan a menudo lo deseas hacer?
necesito ayuda lo antes posible para saber como puedo pasar un objeto por referencia a una function o procedimiento para poder trabajar con el objeto desde el procedimiento
ademas tengo problemas para acceder a informacion que guardo en un cursor. Por favor ayudame
1. Puedes enviar un objeto como parámetro, enviando su "name". Por ejemplo, podrías desear cambiar el backcolor de Text3 en el LostFocus con un procedimiento que lo haga, así:
Thisform.CambiarBack(this.name)
Y en el procedimiento, pondrías así:
*
Parameter MiObj
Control=MiObj+'.BackColor'
&Control=RGB(192,200,0)
2. ¿De qué forma deseas tener acceso a los datos del cursor?
Enviado por alberto mancuso el día 20 de julio de 2005
que tal amigo, tuve un problema con un archivo que
maneja campos memos de 3 megas mas o menos donde
en un proceso de grabacion se me grabaron basuras
en ele campo memo, que pudo haber pasado ?
saludos
Enviado por alberto mancuso el día 20 de julio de 2005
sabes cual es la capacidad maxima que puede tener un archivo fpt ?
en realidad me paso una sola vez ese problema y no se por que.
que otra opcion me queda para reemplazar los memos, es un sistema donde
guardo historias clinicas de pacientes.
saludos y gracias.
alberto mancuso
santa fe - argentina
Enviado por alberto mancuso el día 20 de julio de 2005
otra pregunta que tengo es si con configurar la impresora como predeterminada es suficiente
para imprimir en un puerto usb desde vfp6
saludos y gracias por ayudarnos entre nosotros
1. En los campos Memo, se almacena el contenido que le indiques. Eso podría ser el contenido de un EditBox, o también podría ser un archivo usando APPEND MEMO TuCampoMemo FROM TuArchivo. Si el archivo es de texto, la información será legible, pero si es de otro tipo como una imagen, un .Doc, etc., entonces el contenido será de puros símbolos. Al campo Memo, se le puede agregar contenido o se le puede sustituir (agregando OVERWRITE al comando), y su contenido puede ser limpiado haciendo un REPLACE TuCampoMemo WITH ''
2. Los campos Memo sólo están limitados por la cantidad de espacio en disco. Así que en cuanto a edición de datos, bueno es usar el ControlSource del campo usando un EditBox.
Hablando de sustituciones inesperadas, me pasó una vez que Tenía en una caja de texto un campo y en un Editbox un campo Memo, además de botones de adelante y atrás. Si yo estaba en el campo Memo, y avanzaba <<ó>>, el contenido que estaba en pantalla se almacenaba en el nuevo campo y me sustituía lo que ahí había. Esto no sucedió si el enfoque lo tenía el campo que no era memo.
3. Claro. En VFP6 no hay distinción del tipo de impresor, de si es USB o no. Imprime bien.
Hola estimado co-listero.
De antemano gracias por tu cordial + desinteresada atención.
Te comento que me ha aparecido el error 1548
(table "alias" has one or more non-structural indexes open) al momento de ejecutar la siguiente instrucción
REMOVE TABLE MiTabla DELETE.
Este error lo posteé en el foro hoy 20 de Julio de 2005, si quieres puedes mirarlo.
Cualquier colaboración será de gran ayuda.
Al parecer, la tabla que intentas remover de la base de datos, con REMOVE TABLE tiene algún índice abierto, por lo que no es posible eliminarla. No sé si ciertamente estás usando archivos .IDX
Lo que puedes hacer es cerrar los índices abiertos antes de ese renglón, o asegurarte que la tabla no está abierta en ese momento. Así:
SET INDEX
REMOVE TABLE TuTabla DELETE
HOLA MANUEL:
MIRA, SOY NUEVO PROGRAMANDO Y NECESITO DE TU AYUDA. ESTOY PROBANDO EN HACER UN SISTEMITA DE GESTION DE PERSONAL Y LA VERDAD ES Q NO TENGO MUCHA IDEA DE COMO HACER UN ARCHIVO Q ME GUARDE LOS DATOS DE ANTECEDENTES LABORALES DE UNA PERSONA. HE PUESTO EN LA TABLA DE ANTECEDENTES UN CAMPO DE NOMBRE HISTORICO PERO COMO HAGO PARA QUE AL INGRESAR UN NUEVO ANTECEDENTE DE UNA PERSONA EN PARTICUALR, ESTE SE PONGA EN FALSO PARA EL ANTECEDENTE ANTERIOR Y EN VERDADERO PARA EL NUEVO? SE Q DEBE SER UNA TONTERA PERO COMO TE DIJE SOY UN IMPROVISADO EN ESTO. DESDE YA MUCHAS GRACIAS!!! EDUARDO
Puedes poner en tu tabla de Antecedentes, además del campo Histórico, otro campo que se llame Activo de tipo lógico.
Y cuando ingreses un nuevo antecedente, buscas el registro donde activo=.t., y le haces un REPLACE ACTIVO WITH .F. para que te lo desactive, y al nuevo, le pones .T.
Hola Manuel
tengo un problema con un combo el cual es de tipo numerico pero en la tabla almacena el valor del indice y no el numero que se selecciona, cuando hago la consulta desde el formulario si se ve el valor que se eligio pero quiero que los valores se visualicen en un reporte y solo manda el indice no el valor por tu atencion de antemano gracias
Se dice que "si la propiedad ControlSource para un combo o un cuadro de lista es del tipo Numeric, el valor de la propiedad ListIndex del elemento seleccionado se almacena en la variable o en el campo del que depende el control. Se debe establecer la propiedad BoundTo como verdadera (.T.) para almacenar el valor de la propiedad List en la variable o en el campo del que depende el control."
hmm, por el momento, te soy sincero.. Busqué si era posible con el CutePDF, pero cómo sólo es accesible a la hora de imprimir, parece que es una operación automática el pedir el nombre del PDF, aunque casi siempre da el mismo nombre del último que se creó.
Talvez alguien tuviera más al respecto.
Estoy barada por eso, pero tu sabes otra forma de imprimir en PDF donde el nombre del archivo se coloque automaticamente? agradezco de antemano tu ayuda
Por fin, amigos, la solución de la impresión a PDF con CutePDF Printer, colocando previamente el nombre.
Aquí está en este enlace:
urrusys.iespana.es/imprimirPDF.htm
Deseo ordenar por fecha pero me pone todos los días 1/mes/año aunque sean de otro mes, y luego los días 2/mes/año con meses revueltos. ¿Qué puedo hacer?
Seguramente tienes una tabla de inventario con campos código, descripción,y otros campos, y una ventas en la que puedes tener numfact,codprod,cantidad y precio.
Haces una relación en tu formulario así: DESDE venta.codigo HASTA inventario.codigo
En el grid pones ColumnCount=5, ControlSource='ventas', ControlSourceType=Tabla, modificas los objetos Column para que apunten al campo que tú deseas, como:
Column1.ControlSource='ventas.codigo'
Column2...............'ventas.cantidad'
Column3...............'inventario.descripcion'
Column4...............ventas.precio
Column5...............ROUND(ventas.precio*ventas.cantidad,2)
Ese grid estaría reflejando los cambios que hagas.
Revisa este otro enlace y seguiremos en contacto: http://www.lawebdelprogramador.com/foros/mostrar_n...
Enviado por gaonajorge el día 25 de agosto de 2005
saludos
tengo un problema, quiero usar una columna virtual dentro de un grid ejemplo tengo un tabla con
numcte,numfac,fecha,imprte
esta la presento en el grid, pero quiero incluir un campo que sea el nombre del cliente que lo jalaria de otra tabla .
si pongo en controlsource de una columna agregada al grid una funcion que me ponga el nombre me marca error y me saca, que puedo hacer
No necesitas una función extra. Sólo haz una relación de tablas.
En tu caso, la tabla TUTABLA.DBF que contiene numcte,numfac,fecha,imprte debe relacionarse con CLIENTE.DBF a través del campo "código del cliente". Así, vas al Entorno de datos de tu formulario y teniendo las dos tablas TUTABLA.DBF y CLIENTE.DBF arrastras el cursor desde tutabla.numcte HACIA cliente.codcliente. Posiblemente te diga que el índice no existe y que lo creará. En ese caso, dile que sí.
Ahora, en tu grid sólo pones la Column extra para el nombre del cliente y entonces vas a las propiedades y en ControlSource le pones "cliente.nomcliente"
Adapta los nombres de campo a los que realmente tienen tus tablas.
tengo algunos problemitas quisiera poder contar con su ayuda,
1- como hago para selecionar de una tabla el maximo de un campo con ciertos parametros pero sin utilizar la sentencia sql ya q en fox pro 6.0 tarda michisimo.
2-lo otro es como abro un informe en vista previa haciendo referencia a datos en el formulario.
3- Quiero saber como programar un grid en la cual pueda introducir datos y q me guarden directamente a la bd, yo lo q he hecho hasta los momento es drale las propiedades al grid y el me trae la tabla y alli puedo tranquilamente indexar datos pero cuando hago una consulta sql con un cursor especificando a un determinado cliente, en el momento de hacer clic sobre el grid en modo de ejecucion me pierde el cursor con los datos sql y me vuelve a mostrar toda la tabla.
1. Calcular valor máximo de un campo:
SELE LaTabla
CALCULATE MAX(campo) TO variable FOR <condiciones>
2. Informe con datos del formulario:
-Si el formulario muestra sólo un registro:
SELE LaTabla
elreg=Recno()
REPORT FORM ElReporte FOR RECNO()=elreg PREVIEW
-Si la tabla tiene algún filtro que nos interesa conservar para el reporte
SELE LaTabla
Elfiltro=FILTER()
REPORT FORM ElReporte FOR &elfiltro PREVIEW
-Si hay varias tablas involucradas, lo mejor es crear sesión privada de datos en el Reporte y colocar en el entorno de datos las relaciones de tablas necesarias como en el formulario, y ahí colocar en la tabla correspondiente la propiedad Filter="Campo=Variable", donde Variable la capturamos antes de lanzar el reporte. Así:
SELE LaTabla
Variable=Campo
REPO FORM ElReporte PREVIEW
3. Para el grid, ControlSource="TuTabla", ControlSourceType=Alias, y en las propiedades buscas cada objeto Column que depende del grid y le pones en ControlSource="tabla.elcampo" según corresponda. Si tu tabla está relacionada con clientes, puedes hacer como dice en la respuesta anterior.
La búsqueda de datos puedes hacerla usando otro formulario. ¿De qué forma usas la consulta SQL con el cliente?
Definir unos renglones como "el código correcto" depende de la forma en que estés trabajando lo datos en el formulario. Te daré un ejemplo: Si tienes la tabla en el Entorno de Datos y su propiedad bufferModeOverride=5. Supongamos que el botón Eliminar realiza la acción en el mismo formulario donde tienes tu cuadrícula. Entonces el código será:
IF MESSAGEBOX("¿ESTÁ SEGURO DE ELIMINAR ESTE REGISTRO?",4,"CONFIRME")
SET DELETE ON
SELECT tuTablaDelGrid
DELETE
SKIP -1
TABLEUPDATE(.T.)
THISFORM.REFRESH
ENDIF
OJO: SET DELETE ON debería ir en el programa principal de tu aplicación o en el Load del formulario.
Enviado por alejandra el día 13 de septiembre de 2005
Hola en verdad quiero aprender, estoy haciendo un sistema en el cual tengo dos combos uno es de los programas que utiliza el depto al que le estoy haciendo el sistema y el otro es de los proyectos que contiene cada programa.
y lo que quiero saber es como debo de hacer mi consulta porque esto es la consulta que pongo en control source: SELECT nombre_proy FROM proyecto where programa= '&Combo1&'
porque en el where es donde estoy solicitando el valor del combo1 me traiga los proyectos que pertenecen a ese prgrama. y si le pongo a ese query el nombre del programa directamente si lo hace pero yo quiero que sea de acuerdo al valor que se elige en el combo, por favor diganme como puedo hacerlo.
de Antemano muchas gracias. Espero una pronta respuesta. Por favor
Enviado por Manuel el día 15 de septiembre de 2005
Haz una variable pública: PUBL PROGRA y PROGRA=' '
En la expresión SQL, ponle programa=PROGRA
Y en el InteractiveChange del Combo de los programas ponle PROGRA=THIS.VALUE
Enviado por Alejandra el día 15 de septiembre de 2005
Mil Gracias Manuel por tomarte la molestia de ayudarm,e pero ahora no se donde debo declarar esa variable please te lo agradecere muchisimo que me vuelvas a contestar de antemano otravez mil gracias.
Enviado por alejandra el día 21 de septiembre de 2005
Hola Manuel, necesito un favorsote, tengo un formulario en el cual capturo un No. de Factura (ID) y otros datos, al momento de guardar, automaticamente abro otro formulario, pero quisiera que este No. de Factura (ID) captudaro se muestre en un cuadro de texto del nuevo formulario y que no se pueda modificar, agradecere tu pronta respuesta, me urge saber como hacerle, thank you
Enviado por Manuel el día 21 de septiembre de 2005
Si abres el otro formulario, usando DO FORM, hazlo así:
DO FORM TuFormulario NAME xTuFormulario
xTuFormulario.ElTextBoxDestino.Value=Thisform.TextBoxOrigen.Value
xTuFormulario.ElTextBoxDestino.Enabled=.F.
Enviado por JUAN MANUEL el día 25 de marzo de 2008
HOLA MANUEL
EN VERDAD NECESITO DE TU AYUDA YA QUE ME DESESPERO EL NO PODER.
NECESITO UNA RUTINA O PROCESO QUE ME PERMITA HACER QUE LOS DATOS DE UNA CONSULTA ME LOP PRESENTE EN COLUMNAS ES DECIR LOS DATOS NOMBRE IMPORTE Y FECHA QUIERO QUE PONGA LA FECHA EN COLUMNA Y LOSDEMAS DATOS EN DETALLE.
EN VISUAL FOXPRO 6.0
TE AGRADECERE MUCHO ME AYUDES GRACIAS DE ANTEMANO.
Enviado por Alejandra el día 21 de septiembre de 2005
Hola manuel ya vez que te habia dicho que lo del problema que tenia con el combo habia funcionado,
pues bien hice algunas modificaciones a mi formulario y a mis tablas y dejo de funcionar, ahora lo que hace es que me llena el combo con el id de la primera tabla que pongo en el entorno de datos, y pues no se donde el combo carga el campo del nombre del proyecto. Ya intente varias cosas pero no puedo ayudame por favor. Gracias de Antemano
Enviado por Manuel el día 21 de septiembre de 2005
Para colocar los campos origen en tu Combo, tienes dos caminos:
1. RowSourcetype=6-Campos y en RowSource pones los nombres de tus campos así Tabla.campo1,campo2,etc.
2. Haces clic derecho sobre el combo y eliges Generador...
El campo destino donde se almacena el valor que el usuario elija, lo pones en ControlSource=Tabladestino.Campodestino
Enviado por Alejandra el día 22 de septiembre de 2005
Otra vez yo, Manuel le puse lo del Control Source pero no me muestra nada me inabilita el combo, te acuerdas que te dije que ese combo se llenaba segun lo que yo eligiera en el primero, intente lo del control Source y esta desabilitado y no entiendo por que la primeravez si me funciono bien si hice lo que tu me dijistes. porfavor contestame. gracias
Enviado por Manuel el día 23 de septiembre de 2005
Pueden haber al menos dos razones:
1. Que no hayan datos que cumplan con el filtro de la expresión-SQL
2. Que hayas movido algún valor en las propiedades o programación.
Perdón porque en la respuesta anterior te hablé de RowSourceType=6-Campos. Es que no recordé que estabas trabajando con 3-InstrucciónSQL. Ponle siempre la expresión, y revisa si tienes registros válidos para el filtro que elijas, y si conservas la programación de la variable pública en el InteractiveChange del combo de programas.
ya verifique todo eso y esta bien ya hasta lo hice directamente con el select y poniendo directamente el filtro y si lo hace bien pero con la variable no lo hace, ya no se que hacer, existira otra frma de hacerlo?
Enviado por Manuel el día 23 de septiembre de 2005
Ya no me funciono el combo
Enviado por ALE el día 23 de septiembre de 2005
ya verifique todo eso y esta bien ya hasta lo hice directamente con el select y poniendo directamente el filtro y si lo hace bien pero con la variable no lo hace, ya no se que hacer, existira otra frma de hacerlo?
Si colocando el filtro te funciona, es posible que el combo de los programas no esté dando el valor de la columna que se espera. Revisa la propiedad BoundColumn de dicho combo. Debe tener un número que es la posición ocupa la columna que te devolverá el valor.
Para ver qué valor lleva la variable PROGRA, en el InteractiveChange del Combo de los programas ponle PROGRA=THIS.VALUE
y luego MESSAGEB('PROGRA='+progra)
Hola Manuel aqui sigo dando lata, hice lo que me dijistes le puse el mesageb en el interactivechange del combo programa y lo que hace es que me toma el valor del primer registro de los proyectos es, decir me manda el nombre del primer programa del proyecto y el combo lo sigue llenando con el id de la tabla de proyectos y eso si la grago al entorno de datos antes que la tabla de programas. ya me estoy dando por vencida que hago crees que tenga solución?
de Antemano Gracias
Enviado por Manuel el día 24 de septiembre de 2005
Por ahí anda el problema. El This.Value debería devolver el ID y no el nombre.
Si el combo de los programas lo llenas con SQL, revisa en qué posición colocas el ID. Digamos SELECT nombre,Id,otro FROM.... en este caso, sería que el ID está en posición 2. Ese valor 2 debe estar en la propiedad BoundColumn.
Si no te funciona, puedes enviarme con confianza el código a mi correo: Formulario y tablas que usas en dicho formulario (con datos o sin datos, como desees).
Enviado por marcos el día 13 de septiembre de 2005
Gracias de antemano. Tengo un problema con el manejador de visual foxpro tables. Hasta ahora siempre he utilizado bd .mdb, y programando con vb6, pero hacciendo pinitos con .bdf me tope con ese problema, la maquina cliente no disponia de dicho controlador y la actualizacion del driver que me aparece en el msdn (en la direccion web que me devuelve al intentar crear el origen de datos a mano), no me dio resultado.La unica forma que supe para solventar el problema fue instalarle el vfp6 en la maquina cliente.... y de esta manera, si iba...(pero demasiado bruto...). ¿Me podrias informar de donde extraer dicho instalador del driver? ¿existe en la carpeta vfp del visual studio? Gracias de nuevo.
Enviado por ma_va93 el día 15 de septiembre de 2005
Hola en realidad es una pregunta.
Necesito instalar una aplicacion en VFP6 en una computadora, como se hace para instalarla sin tener que instalar todo el vfp
Que librerias necesito.
Enviado por Manuel el día 16 de septiembre de 2005
Toma los archivos vfp6r.dll y vfp6renu.dll (o vfp6resn.dll) de la carpeta Windows\system y ponlos en la misma carpeta donde pongas el ejecutable en la PC donde no hay Fox instalado.
Enviado por carlos el día 21 de septiembre de 2005
Hola Amigo Necesito ver la forma de interconectar el VFOX con COREL para poder trabajar con mapas tipos GPS con distintos ZOON
Te agradeceria un monton
Hola, tengo un grid y en una de sus columnas tengo un combo, que quiero me muestre unos precios, antes de esto lleno una matriz con los precios que quiero que muestre pero no lo hace, que hago, hay algo en especial, que hay que hacer para que los combo se muestren en un grid, ya que hice lo mismo en un combo pero fuera del grid y este si me muestra los precios.
Enviado por Manuel el día 23 de septiembre de 2005
Revisa las propiedades del Grid, y busca la Column donde tienes el combo. En las propiedades de la Column, debe estar CurrentControl=Combo1. Lo normal es que esté Text1, pero tú cámbiale a Combo1.
Enviado por Manuel el día 24 de septiembre de 2005
Gracias Raúl. Me alegra que hayas participado.
También puede revisarse que el ControlSource del combo tenga el valor del tabla.campo que se desea mostrar.
Enviado por Walter el día 25 de septiembre de 2005
Saludos Manuel
Necesito saber como puedo imprimir (VFP60) un reporte en dos impresoras a la vez, es decir cuando un usuario envie una factura a la impresora, este a su vez se replique en otra impresora de la misma red, por favor si me puedes ayudar estare sumamente agradecido.
Hola, gracias, ya hice todo eso y me sigue el mismo problema, te explico, tengo un combo en una columna de un grid, este combo es para el precio, donde me debe listar 5 precios, pero antes de entrar en el gotfocus del combo yo lleno la matriz con los 5 precios que necesito me despliegue pero no lo hace, no me manda ningun error, pero cuando le doy click al combo no hace nada no me despliega lo precios, ni tan solo me despliega el combo vacio o sea no hace nada.
Hola, ya me salio todo en el combo, pero tengo otra pregunta, si yo quiero en este combo que me mostrara una matriz de 2 columnas, en el rowsource tendria que colocar el nombre de la matriz y ya, o tengo que dividir la primera columna y la segunda que quiero mostrar, o hacer dos arreglos, no se como hacerlo.
Enviado por Manuel el día 29 de septiembre de 2005
Seleccionas una tabla primero y le haces un REPLACE al campo que deseas, y luego eliges la otra y haces también el otro REPLACE.
Por ejemplo, si tienes un Text1, y lo vas a llevar a TablaA.CampoX y también a TablaB.CampoY:
SELECT TablaA
APPEND BLANK
REPLACE CampoX WITH Thisform.Text1.Value
SELECT TablaB
APPEND BLANK
REPLACE CampoY WITH Thisform.Text1.Value
El comando APPEND BLANK abrirá un nuevo registro. Pero no es necesario si tú sabes a qué registro lo asignarás.
Hola disculpa que moleste tanto por este tema, pero como me ha costado, el combo en style le puse 0 ya que necesito escoger de la lista, pero si no estan escribir valores, entonces cuando los escribo no me los toma como numero si no como texto, no se porque, que si luego tomo ese valor que escribi y lo multiplico por cantidad o por cualquier numero el resultado me da 0.00
Enviado por Alicia el día 30 de septiembre de 2005
Hola manuel Cómo estas?
Gracias por ofrecerte a a yudarnos.
Mira, tengo un formulario de altas de recibos entonces al momento que doy de alta al recibo quiero mandar a imprimir ese recibo, como deb