FoxPro/Visual FoxPro - Experiencias iniciales en Mysql

   
Vista:

Experiencias iniciales en Mysql

Publicado por victor perez (278 intervenciones) el 28/09/2010 03:58:22
Estimados programadores (es_binario)

Estuve haciendo los ensayos con Mysql. Me conecte desde mi casa a la computadora de mi clinica via internet. Utilizo un emulador o creador de IPs para acceso desde internet (llamado Hamachi o ahora recientemente LogMein Hamachi).

Modifique parte de mi programa de pacientes y abri la conexion remota. Ya migre la base de datos, mas sensibles (sin los memos porque no se como hacerlo) mediante un codigo sencillo que alguien facilitò en internet. La migracion fue completa de la base de datos de pacientes.

Las pruebas:

- Mi sistema tiene un area de consulta de codigos de pacientes segun nombres, apellidos, apellidos y nombres, telefono, etc...y les cuento que en todas la consulta fue mas rapida usando codigo SQL que usando codigos nativos de Foxpro. Sobretodo la interaccion con la Red de mi clinica pues solo tuve que poner en el hostname la direccion ip que asigna hamachi (permanentemente) a la computdora de mi clinica.

El movimiento entre pantallas fue mas rapido. La no necesidad de abrir todas las bases de datos en el init del form, y otras cositas influyeron evidentemente en el sistema.

Queria comentarles esta experiencia porque la velocidad de acceso desde mi casa es hasta mas rapida que estando conectado desde mi terminal en la clinica, mediante red interna y usando los comandos de VFP.

Eso si, me gustaria saber como hacer para conectarme via internet sin necesidad de usar Hamachi. La seguridad alli no es 100% y puede aun que como son gratis de pronto digan que no van a dar mas el servicio y quedamos fuera...

Saludos y espero sus comentarios.

Victor,
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

Uso de Index Mysql

Publicado por victor perez (278 intervenciones) el 28/09/2010 17:31:35
Amigos,

Tengo la siguiente inquietud que no he podido resolver.

Supongamos tenemos la siguiente sentencia

SqlEXec("lnhandle","Select * from patient force index codigo","Pat_code")

Al ejecutar esa sentencia se crea un Cursor "Pat_code" con la data...pero yo quiero que ese cursor guarde el index tambien para agilizar un SEEK

Si al Desconectar hago un Seek, me dice, por supuesto , que la tabla no esta indexada...

Sera que tengo que indexar el Cursor cada vez que hago una consulta, esto quitaria mucho tiempo de ejecucion.

Claro, se me ocurrio otra idea pero no se si en programacion sea buena:

Hago lo siguiente;

scodigo=" "
SqlEXec asi ("lnhandle","Select * from patient where codigo like '&scodigo'","Pat_Code")

If reccount(Pat_code) > 0
MessageBox("El Codigo " + scodigo + " no esta disponible")
Return 0
etc
EndIf

Pero si lo hago asi, entonces para que indexo la Base de DAtos MySQL. Esta es mi incognita.

Este comando es para el Valid del Campo Codigo, de manera que no pueda introducir a dos pacientes con el mismo codigo al sistema.

Mi codigo es exacto de 8 caracteres... 6 numeros y 2 letras que deben cumplirse mediante una sentencia de verificacion (tanto de numeros como letras y longitud).

Saludos y espero sus comentarios la antes posible para seguir.

Si resolvemos esto, ya tendria el modulo para Agregar Nuevos pacientes listo...

Ya solo faltaria el asunto al guardar la data de la pantalla en la Base de datos y mis otros modulos son muy similares, excepto el de facturacion que es mas complicado.

Un abrazo,
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: Uso de Index Mysql

Publicado por ACM (162 intervenciones) el 28/09/2010 18:27:56
Hola Victor

Si lo que quieres es validar el codigo para que no se repita la segunda opcion esta bien esa es la forma de trabajarlo.

scodigo=thisform.txtcodigo.value
SqlEXec asi ("lnhandle","Select codigo from patient where codigo= ?scodigo orde by codigo'","Pat_Code")

If reccount("Pat_code") > 0
MessageBox("El Codigo " + scodigo + " no esta disponible o ya reguistrado")
Return 0
etc
EndIf

Victor yo no usaria el like ya que sirve para buscar codigo con coincidencia por eso lo reemplaze por el =

ya que si tiene un codigo

aaaaa
aaaaa1

igaul te llenara el cursor y tu quieres un codigo exacto el like nos sirve para consulta como ayuda y traer datos concidentes para que el usario no escriba todo el codigo.

el order by te permite llenar tu cursor ordenado segun el campo.

pero en tu caso como es codigo unico siempre lo deberia llenar con un registro. el order by agiliza un poco la consulta y si te das cuenta reemplaze en este caso el

Select * from

select codigo from

tambien agiliza ya que no esta cargando todo la tabla solo el campo codigo ya que eso es lo que tu quieres validar.

el order by sirve para indexar o entregar un cursor ordenado segun el campo que le especifiquies es es bueno si quiero un consulta de todos los cliente ordenado por nombre.

Saludos

Acm
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: Uso de Index Mysql

Publicado por Juan Carlos lopez Lopez (128 intervenciones) el 28/09/2010 23:22:29
Hola Victor, te felicito por la migracion a Mysql.
Tengo instalado WAMP, este tiene Apache, MySql y Php juntos. Entonces ya tengo Mysql que es lo que se necesita para empezar a usar VFP con Mysql. Que mas necesito, para empezar hacer mis pruebas, conoces de algun link, que me pueda servir, o con que material empezastes esta migracion, deseria por favor nos digas que herramientas necesitamos, para empezar a trabajar.

Desde ya espero algun comentario.
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

RE: Uso de Index Mysql

Publicado por victor perez (278 intervenciones) el 28/09/2010 23:59:27
Hola Juan,

Te explico...empece en esto hace 3 semanas pero estoy estudiando bastante.

A mi en lo personal el XAmp no me gusta porque necesitas activar apache para poder ver el phpAdmin (logico es PHP).

Yo te aconsejaria que bajases el MySQL, El ODBC driver para poder activar y tener acceso a tu bases de datos mysql desde VFP y otros programas, y el MySql administration de la misma compañia MySQL.

Aqui bajas el MySQl http://dev.mysql.com/downloads/mysql/

Aca el ODBC http://dev.mysql.com/downloads/connector/odbc/

Aca el Administration dev.mysql.com/downloads/gui-tools/

Usa estos programas porque la mayoria de la informacion que hay hacen referencia a estos.

Aqui en el forum es_binario subio un pequeño ejemplo de MysQl y foxpro...buscalo colocando "punto de venta" en la seccion de busqueda de este mismo forum.

Para conectarte a tu base de datos crea un metodo en los forms o el formset principal que tenga las siguientes pautas y que se llame "conectar"

PUBLIC lnhandle

lcStringCnxLocal = "DRIVER={MySQL ODBC 5.1 Driver};" + ;
"SERVER=localhost;" + ;
"UID=root;" + ;
"PWD=tu_password;" + ;
"DATABASE=tu_base de datos;" + ;
"OPTIONS=1;"

SQLSETPROP(0,"DispLogin" , 3 )
lnHandle = SQLSTRINGCONNECT(lcStringCnxLocal)

Luego para conectarte basta con que pongas

Thisform.conectar
SqlExec(lnhandle,"comando de SQL")

Si necesitas que se cree un cursor pones
Thisform.conectar
SqlExec(lnhandle,"comando de sql","nombre_del_cursor"). Esto te ayuda a saber el nombre del cursor y no dejar que el sistema lo cree por su cuenta.

Mi direccion de Windows Live es "vperezr@cwpanama.net"

Si tienes dudas me contactas y hacemos las pruebas. Enseñando se aprende mucho mas y a mi me enseñaron VFP hace 1 1/2 años y Gratis. ASi que hago lo mismo.

Ademas consigue un libro como La Biblia de MySQL que està por alli sin costo.

Tambien Lee lee lee y lee...

Yo estoy experimentando con la base de datos que esta en mi clinica, me conecto desde mi casa con 1 MB de ADSL y resulta veloz comparado a usar lo que tradicionalmente hacia con VFP sin MySql.

Recuerda que la interfase grafica tuya sera VFP y el motor de Bases de DAtos MySQL.

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

RE: Uso de Index Mysql

Publicado por victor perez (278 intervenciones) el 28/09/2010 23:40:43
ACM,

Gracias por los datos.

Si , entiendo el asunto del Like , pero en mi caso el codigo es exactamente de 8 caracteres de largo, es decir, no existen 4 ni 6 ni 7 caracteres, siempre tienen que se 8, de alli que si introduces en el codigo "1234" te diria que falta completarlo hasta los 8 caracteres y en el orden que ya tengo preestablecido de numeros y letras.

El codigo mis pacientes esta formado por la fecha de nacimiento + inicial del nombre + inicial del apellido de esta manera

Codigo= DDMMAA + INICIAL DEL NOMBRE + INICIAL DEL APELLIDO.

Ah y que si nacieron el mismo dia y tienen las mismas iniciales. Ya mis asistentes estan entrenados para que se use la segunda letra del apellido, y si no esta libre, la tercera, etc.

Pero si, resulta mucho mejor usar el "="

Ya termine basicamente el modulo de pacientes para agregar, editar, imprimir, borrar pacientes...

Lo unico que no se es como bloquear el registro de forma que si lo estoy modificando nadie lo pueda modificar hasta que yo lo libere.

En VFP usamos el Rlock() pero acà no se como hacerlo en la tabla de MySQL.

Se que debe haber algun comando pero no he investigado cual, pues si sabes, te lo agradezco.

Tengo que actualizar el sistema cuanto antes para seguir con Mysql 100% y dedicarme a aprender mas.

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

RE: Uso de Index Mysql

Publicado por Juan Carlos Lopez Lopez (128 intervenciones) el 29/09/2010 19:02:19
Gracias Victor por tu tiempo y paciencia en explicar y dejarme los links.
Y sobre leer , leer note preocupes.
Tambien ya vi que para descargar esta en ingles. eso es lo malo y de lo que uno se pierde si no sabe ingles, pero ya vere como me las ingenio.

Saludos y mil gracias nuevamente.
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:Experiencias iniciales en Mysql

Publicado por Cesar Diez - Canseco (63 intervenciones) el 29/09/2010 19:21:04
Estimado victor,
Te felicito por tu migracion a Mysql. Yo tambien estoy mis pruebas. Un favor. SI es posible. Que puedas compartir el codigo que utilizastes para migrar tus tablas a MySql o para un link donde se puede bajar dicho codigo. Mi correo es cadiezcanseco@yahoo.com

Gracias,
Saludos desde Peru
Cesar
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:Experiencias iniciales en Mysql

Publicado por victor perez (278 intervenciones) el 30/09/2010 02:46:34
Hola Cesar,

El codigo es sencillo. Usa sentencias MySQL desde Fox.

Si vieras lo sencillo que es pero se debe configurar para cada tabla, es decir, migras una tabla a la vez.

El codigo lo tengo en mi casa, ahorita estoy en la clinica.

Pienso que mañana me lo puedo traer en el Memory Stick y te lo paso.

Yo lo bajé del INternet y lo modifique a mi manera...

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

Mysql vs Foxpro con mi Sistema de Pacientes

Publicado por victor perez (278 intervenciones) el 30/09/2010 19:57:14
Hola amigos,

He leido mucho sobre experiencias y comparacions de VFP y MySql.

Pero les afirmo, con MySQL es mas rapida la consulta y lo comprobé hoy.

Tengo los dos sistemas en un mismo Menu --- Buscar Pacientes usando VFP tradicional usando sentencias SQL para VFP y base de datos nativa de VFP y Buscar Pacientes usando sentencias MySQL y base de datos SQL todo en el ambiente grafico de VFP.

La diferencia es abismal. Consulte por todas las variables que tengo en mi sistema (Codigo, Nombres, Apellidos, Apelllidos y Nombre, Cedula, Telefono y No. de registro ) y en todas la velocidad fue hasta un 100x mas rapida con MySQL que con VFP.

Mismo programa, misma base de datos y la velocidad es muy muy superior en MySQL.

Voy a migrar todo mi sistema de poco a poco pues son muchas pantallas.

Saludos a todos y queria comentarles sobre mi experiencia.

Victor,
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