PREGUNTAS CONTESTADAS - FoxPro/Visual FoxPro

 Hay un total de 1456 Preguntas.<<  >> 

    Pregunta:  66188 - UPDATE E INSERT EN MYSQL CON CONEXION ODBC
Autor:  daniel marte
Buenas Noches, tengo una conexion odbc desde foxpro 6.0 a una base de datos en mysql, la cual funciona a la perfeccion. cuando actualizo (update) o inserto (insert) me funciona a la perfeccion, pero solo con cinco campos o menos, si le agrego un campo mas, me da error, el codigo es el siguiente
para la conexion

public lnhandle


lcserver = "localhost"
lcdatabase = "supermercado"
lcuser = "root"
lcpassword = "marcas"

cplocalconnectsys="Driver={MySQL ODBC 5.1 Driver};Port=3306"+;
";server="+lcserver+;
";database="+lcdatabase+;
";uid="+lcuser+;
";pwd="+lcpassword

sqlsetprop(0,"DispLogin" , 3 )
lnhandle = sqlstringconnect(cplocalconnectsys)

if lnhandle > 0
cmd = sqlexec(lnhandle,"select * from sis_usuario order by nombre","usuario01")
cmd = sqlexec(lnhandle,"select * from sis_empresas order by nombre","empresa")
else
aerror(laerr)
messagebox("No se pudo conectar a mySQL. Error: " + chr(13) + laerr[2])
endif

y para el update e insert

if thisform.registro_nuevo = .f.
cmd = sqlexec(lnhandle,"update sis_usuario set codigo = ?thisform.codigo.value ,;
nombre = ?thisform.nombre.value ,;
pase = ?thisform.pase.value ,;
nivel = ?thisform.grupo01.value ,;
descuento = ?thisform.descuento.value ;
where codigo = ?thisform.codigo.value")
endif

if thisform.registro_nuevo = .t.
cmd = "insert into sis_usuario(codigo,;
nombre,;
pase ,;
nivel,;
descuento) values (?thisform.codigo.value, ;
?thisform.nombre.value,;
?thisform.pase.value,;
?thisform.grupo01.value,;
?thisform.descuento.value)"
inserta=sqlexec(lnhandle,cmd)
endif

no tengo idea de lo que puede estar pasando
  Respuesta:  Guadalupe Leija
Lo que debes de hacer es meter el comando de MySQL a un TEXT ejemplo:

TEXT to mysql noshow
UPDATE
tabla_en_uso
SET
campo1=?variable1,
campo2=?variable2,
campo3=?variable3,
.
.
campoN=?variableN
ENDTEXT

SQLEXEC(_oconnect,mysql)

    Pregunta:  66194 - COMO UTILIZAR TABLA TEMPORAL EN UNA GRID
Autor:  Carlos Quisay
Hola estimados colegas, necesito utilizar en una GRID una tabla temporal (sys(3)) para ingresar datos de pagos de facturas.
Cuando utilizo la tabla original la grid me funciona muy bien, lo que pasa es que tengo registros y me salen todos los registros.
La idea es utilizar una copia de la tabla original, asignarla al temporal generada con SYS(3) para añadir o borrar las diferentes formas de pago. Si alguien me puede ayudar gracias de antemano.
  Respuesta:  Carlos Quisay
Gracias Jose Maria, una respuesta excelente, he solucionado el problema con tus indicaciones. Saludos
  Respuesta:  Jose Maria VIlar
Si entiendo lo que necesitas, la forma en que yo lo realizo es

En el fuente creas un cursor Ej. CREATE CURSOR PAGOS(CODIGO N(10), DETALLE C(50) .......etc ) loscampos que necesites , luego cargas en este cursor los campos que necesites de la tabla.
Utilizas este cursor PAGOS en la grilla y al confirmar la carga haces un proceso que barra este cursor y actualice la tabla.

Otra forma que es la que utilizo es crear una vista de la base que necesito usar y establecer los campos a actualizar , ponerla en la GRID y al confirmar se actualizara , recorda poner al finalizar

=CURSORSETPROP("Buffering",3)
=TABLEUPDATE(.T.)
No se si me explique bien pero cualquier cosa hacemelo saber

    Pregunta:  66224 - AYUDA EN CONTROL DE DUPLICADOS DE REGISTROS
Autor:  Victor Hugo Cuellar
Hola... necesito por favor una manito en un problema que se me presento en un modulo de captura de informacion...
Al intentar crear un nuevo registro necesito validarlo para saber si existe y si es asi me notifique... de lo contrario me deje crearlo...
A continuacion les muestro el codigo que me recomendaron pero no me funciona...

IF .NOT. SEEK(STR(this.value, 12), 'ccnit', 'nitlla')
INSERT INTO ccnit (nitlla, nitdes, cedula) VALUES (this.value, 'nuevo tercero', 0)
ENDIF
thisform.release

este codigo esta en el procedimiento lostfocus del campo de captura llamado txCod

De ante mano les agradesco
  Respuesta:  Jose Maria Vilar
1.- Si le estableciste una clave

     sele archivo

set order to clave
if seek( clave)
=message("ya existe este registro") como quieras
else
insert ........
o appe blank
replace .....
replace .... de la forma que quieras usar
endif


2.- Si no le estableciste una clave

     sele archivo

locate for ...... == ........
if found()
=message("ya existe este registro") como quieras
else
insert ........
o appe blank
replace .....
replace .... de la forma que quieras usar
endif



Espero habertelo explicado bien, cualquier cosa me avisas

    Pregunta:  66251 - VFP 9 CON WINDOWS 7
Autor:  Alicia Barat
Tenemos problemas con una aplicación en VFP9 SP2 corriendo en una pc con Windows 7. Paso a comentar para que tengan idea de que es lo que está pasando.
Trabajamos en Red Novell. Nuestra aplicación está corriendo en un servidor que es accedido desde varias pc y los datos los tenemos en SQL 2003.
La aplicación genera en el disco C de cada pc que la accede y en un directorio de trabajo archivos de trabajo. Cuando se están ingresando datos cada 4 o 5 transacciones nos dá el mensaje de error "File in use" siendo que desarrollamos una rutina que controla que se generen hasta 50 archivo de trabajo en la aplicación para esa pc y controlamos que el archivo no esté en uso
  Respuesta:  Ignacio Casinelli Esviza
Alicia,

1. Pudieron correr la aplicación desde VFP con el debuger y ver exactamente cuál fue el archivo que dispara el error?

2. Tené en cuenta (ya lo saben quizás) que si el ejecutable está en la red y todos los clientes ejecutan el archivo en una carpeta compartida es posible que se creen archvos de recursos (foxuser.dbf) en el mismo directorio que el ejecutable y cuando otro usuario los accede los bloquee. no es una fija, es solo una cosa a chequear.

3. está bueno armar un log en forma de .txt que escriba una línea por cada archivo que se abre y al momento del error se detectaría cuál es la tabla o archivo que lo traba.

4. si se intentan desde el mismo programa abrir dos veces un archivo local con alias, la aplicación se confunde y creen que son dos distintos y si los estás intentando abrir en modo exclusivo no te va a dejar.

    Pregunta:  66302 - COMO PUEDO INSERTAR CAMPOS A VARIAS TABLAS
Autor:  Fernando Vargas
Tengan un muy buen dia todos, primero que nada les quiero dar las gracias por su valiosa ayuda.

Mi pregunta es la siguiente: Como puedo agregar el mismo campo a dos tablas diferentes, las tablas se guardan en carpetas de datos y meses diferentes por ejemplo:
Nombre de la carpeta general: EMP001
Nombre de las carpetas de los meses:
012012
022012
032012

etc.. las tablas se repiten en todos los meses, en algunos meses no existe (Es porque asi esta diseñado mi sistema), el detalle es que son muchos periodos los trabajados y muchas carpetas EMP00xx las que existen, necesito un codigo que vaya carpeta por carpeta validando si existen las dos tablas que les comento, entonces que agregue el campo...

Espero haberme dado a entender y gracias por su ayuda..

Saludos
  Respuesta:  Eduardo Ureña
Yo utilizaría un ciclo For para hacerlo.

Ejemplo:

DIME Años(4) &&Años que se van a trabajar...
Años(1)="2010"
Años(2)="2011"
Años(3)="2012"
Años(4)="2013"

FOR J=1 TO 4 &&Segun los años...
FOR I=1 TO 10 &&Cantidad de carpetas
IF I<10
Xl="0"+ALLTRIM(STR(I))
ELSE
Xl="ALLTRIM(STR(I))
endif

Carpeta_Principal="EMP001"+Xl+Años(I)+""
Archivo_a_modificar=Carpeta_Principal+"NombreArchivo.Dbf"
IF FILE(Archivo_a_modificar) &&Revisando si el archivo existe...
USE (Archivo_a_Modificar) in 0 ALIAS Trabajo EXCLUSIVE
SELECT Trabajo
ALTER TABLE Trabajo ADD COLUMN NombreCampo c(20)
use
ENDIF
NEXT I
NEXT J

************

Por ahí andaría el asunto, al menos para mí.

No he chequeado su funcionamiento porque es sólo un ejemplo y asumo que tenés conocimientos suficientes en VFP para entender la idea.

Saludos

    Pregunta:  66313 - COMO IMPRIMIR LOS DATOS DE FORMULARIO ACTUAL
Autor:  gabriel valles
Tengo un formulario con un registro, y quiero imprirmir este, pero ya he intentado y no hay resultados ejemplo
SET DEVICE TO printer
SET PRINTER on
STORE 0 TO l

l=l+1
@ l,10 say "Formato de Cliente"
l=l+1
.
.
.
eject
SET DEVICE TO printer
SET PRINTER off

pero solo imprime 1 vez y se bloquea la impresora, he intentado con varias combinaciones pero no tengo exito, alguien que me pueda ayudar, gracias..
  Respuesta:  Jose Maria Vilar
Con que version de VFP estas trabajando, porque no creas reportes,
De todos formas por lo que veo, no tenes una secuencia de impresion armada

EJ,

FOR I = 1 TO XXXX

@ l,10 say "Formato de Cliente"

ENDFOR

Cualquier cosa escribime

    Pregunta:  66320 - IMPORTAR DOS TABLAS DE EXCEL A UNA SOLA EN VFP
Autor:  Johdag Johdag
Hola, tengo una cuestión,

Necesito importar dos tablas desde excel a una sola en VFP. Si utilizo el comando Append From con la primera tabla si me funciona correcto; pero al utilizarlo con el segundo xls me sobrescribe los registros y sólo aparecen los últimos importados.

Qué comando necesito??

No puedo guardar los datos en una sóla tabla de excel ya que son más de 180 mil registros y para importar a VFP la solución más sencilla que encontre fue convertir los xls a version 5.0, pero esta version solo me permite guardar hasta 65 mil registros. asi que tuve que dividir la tabla en tres partes..

Alguna solución? se nota que no soy experto, pero voy aprendiendo con mis errores.

Hasta ahora tengo apenas unas cuantas lineas:

xarchivo=GETFILE('xls','Archivo de Excel','Abrir',1,'Abrir Archivo de Planilla de Excel')
SELECT 50
USE "mi tabla"
APPEND FROM (xarchivo) TYPE xls
  Respuesta:  Jose Maria Vilar
Lo mas simple que se me ocurre es que crees dos cursores con el formato de la tabla, primero importas el excel a un cursor y luego al otro.
Al terminar comensas a leer un Cursor y lo grabas en tu base y luego haces lo mismo para el segundo cursor

Ej create cursor primero( registro1,registro2,registro3.....)
create cursor segundo( registro1,registro2,registro3.....)

&& Deben ser igual a la tabla que queres actualizar

xarchivo=GETFILE('xls','Archivo de Excel','Abrir',1,'Abrir Archivo de Planilla de Excel')

SELE O
USE "mi tabla"

SELECT 0
USE " primero"
APPEND FROM (xarchivo) TYPE xls

SELECT 0
USE " segundo"
APPEND FROM (xarchivo) TYPE xls

sele " primero"
scan
scatter memvar
sele "mi tabla"
appe blank
gather memvar
endscan

SELE " segundo"
scan
scatter memvar
sele "mi tabla"
appe blank
gather memvar
endscan


Espero que lo entiendas

    Pregunta:  66372 - RUTINA DE SEEK VFP9.0
Autor:  Alejandro Chavarria Nuñez
¡Hola Programadores del mundo!
Les tengo una pequeña consulta con respecto a la rutina de el comando SEEK
al momento de que ejecuto un formulario me busque el registro indexado. si lo encuentra que me notifique , si no, que lo guarde. Al parecer me esta dando problemas ya que cuando le doy al botón guardar solo me salta la condición que diga que ya existe el registro , pero siempre lo guarda.
¿que estoy haciendo mal?. Aquí les dejo mi rutina :

SET ORDER TO num_cheque

SEEK (thisform.txtnum_cheque.value )
IF FOUND()
MESSAGEBOX("NUMERO DE CHEQUE YA INGRESADO EN LA BASE DE DATOS", 48, "ERROR")
ELSE
Reemplazar registro with thisformtxtbox.value . . .
ENDIF

Saludos desde Honduras.
  Respuesta:  Sebastian Penayo
lo que faltaria es que limpié todo el el text donde digitas el código del cheque. y lo retornes ahi.

SET ORDER TO num_cheque

SEEK (thisform.txtnum_cheque.value )
IF FOUND()
MESSAGEBOX("NUMERO DE CHEQUE YA INGRESADO EN LA BASE DE DATOS", 48, "ERROR")
thisform.txtnum_cheque.value=0 && caso que sea numérico
thisform.txtnum_cheque.value=space(30) && caso que sea alfanumérico
thisform.txtnum_cheque.enabled=.t. && habilitas el text
thisform.txtnum_cheque.setfocus() &&retorne el cursor en ese text
ELSE
Reemplazar registro with thisformtxtbox.value . . .
ENDIF

    Pregunta:  66484 - PANTALLA BLANCA EN VF9
Autor:  Juan Garcia
Realice un programa con un formulario MDIForm principal y 3 secundarios que se ejecutan desde un menu, al compilarlo y ejecutarlo al abrir y cerrar el formulario principal aparece una pantalla blanca, que debo hacer para que no aparezca, aqui esta la programacion del .prg

SET DATE FRENCH
SET DELETED ON
SET TALK OFF
SETmain =.t.
_screen.visible=.f.

DO FORM PRESENTACION.SCX
Application.Visible = .F.
DO FORM PRUEBA.SCX

ON SHUTDOWN DO Salir
READ EVENTS

RETURN

y en la ventana de propiedades

MDIForm = .T.

ShowWindow = 2

y cree un config.fpw con screen = off
  Respuesta:  Luis Luis
En el config.fpw SCREEN = OFF

    Pregunta:  66489 - ENVIAR COPIA BASE DATOS POR EMAIL CADA DIA AUTOMATICAMENTE?
Autor:  Damian Ruzak
Hola.Que tal

Estoy en con una aplicacion de un almacen.
El dueño quiere ver y asi conocer el movimiento de ventas y stock del negocio a distancia, de forma diaria.

Para ello pense en:
1-hacer que al finalizar el dia (ya sea por horario o al momento de cerrar el programa), que haga una copia de la tabla de movimientos (ya sea en txt o simil) y se lo envie atraves de un email directo al dueño (de paso asi le queda de backup).

2-o sino, hacer que la base de datos estee en un archivo access y que este se levante automaticamente a un host para que asi lo vea via web al archivo de la B.D.

**La idea es que sea automatico, sin que el empleado que usa el programa estee armando enviar el mail, o tener que hacer otro proceso, ya que suele ser "tronco" por asi decirlo.

CUAL OPCION RECOMENDARIAN, O QUE OTRA OPCION SENCILLA HABRIA PARA APLICARLA A ESTE FIN. Ya que quizas estoy pasando por alto algun paso sencillo.
Agradezco sus respuestas detalladas
  Respuesta:  Miguel Angel Henao Avendaño
Hola Damián,

Yo hago lo mismo que te están pidiendo de la siguiente manera: Tengo una tarea programada que ejecuta un programa el cual envía un correo automático con los datos ajuntos todos los días a las 5am mediante Outlook. Debes tener obviamente Outlook instalado y listo..

|<  <<  136 137 138 139 140 141 142 143 144 145 146  >>  >|