Gracias por su respuesta.
Gracias Amigo.
Esto me faltaba, ahora creo que puedo iniciar mi nuevo rumbo para cambiar mis dbf a mariadb.
Agradeciendo a toda la comunidad por cada uno su valiosa colaboración que aportan que hacen enriquecer el conocimiento de la programación con esta herramienta, que nos da de comer todavía a muchos.
Saludos desde el El Salvador
Gracias Amigo.
De verdad de verdad invertí mas de 3 semanas en sqldata para poder migrar mi base de datos, pedi ayuda al autor porque es bonita la herramienta para trabajar y tiene un ejemplo y me daba la oportunidad de trabajar las técnicas con las mismas dbf y luego solo pasar a mi nueva base de datos a usar, pero en el manejo de id pase mucho tiempo y no logre superarlo, me ayudaron pero era usando directamente sqlserver pero el propósito era ir poco a poco migrando mi aplicación usando la técnicas de oledb hasta finalizarlo y luego solo pasar a mariadb por eso me gustaba bastante.
Pero con foxydb aunque no trabaja directamente las técnicas con las tablas veo que migrar no me consumirá mucho tiempo porque no hay que mover mucho código y esa parte me estaba fustrando de nuevo el manejo de id y el ui pero gracias a ti amigo, hoy puedo comenzar con mis aplicaciones hechas a convertirlas en mariadb y las nuevas a trabajar ya con esta técnica,
Muchas gracias por tan valiosa ayuda.
De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Antonio Meza
Enviado el: domingo, 10 de septiembre de 2017 08:11 a.m.
Para: Comunidad de Visual Foxpro en Español <publice...@googlegroups.com>
Asunto: [vfp] Re: Como configurar MariaDb para conectarse remotamente
Para obtener un UUID solo tienes que hacer lo siguiente
Una última pregunta.
Este número de UUID solo puedo obtenerlo cuando ya está agregado el registro en la base con el update o en tiempo de edición de cursor en memoria antes de iniciar si hay cambios y aplicar el update.
Gracias nuevamente.
De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Antonio Meza
Enviado el: domingo, 10 de septiembre de 2017 08:11 a.m.
Para: Comunidad de Visual Foxpro en Español <publice...@googlegroups.com>
Asunto: [vfp] Re: Como configurar MariaDb para conectarse remotamente
Para obtener un UUID solo tienes que hacer lo siguiente
Gracias Mi amigo.
Te lo agradezco mucho.
Saludos
Rafael Carballo
Con respecto a esta duda.
Una duda a que te refieres con trabaja directamente las técnicas con las tablas?
Foxydb trabaja solamente con :
Motores de Bases de Datos
· mySql
· Valor predeterminado 1
· mariaDb
· Valor predeterminado 2
· fireBird
· Valor predeterminado 3
· postgreSql
· Valor predeterminado 4
· sqlServer
· Valor predeterminado 5
La sqldata.dll es una clase desarrollada en Visual FoxPro 9.0 sp2 y ADO. Con esta clase es posible realizar conexiones al motor de base de datos sql server en sus versiones 2000, 2005, 2008, 2008r2, 2012, 2014,2016.
Tambien mysql,mariadb,firebird,prosgreSQL,Visual Foxpro,Oracle otros servidores sql que tienen conector odbc y también oledb
No sirven los conectores .net
windows 2000,xp,vista,7,8,8.1,10,servidores 2000,2003,2008,2008r2,2012,2012r2,2016, 32 y 64 bits
Esta clase permite hacer todas las técnicas de programación en la misma DBC con ADO sin necesidad de pasar a otra base.
Luego al terminar solo cambio el motor de conexión.
A esto me refería amigo.
Saludos Cordiales.
Disculpa Amigo, que me metí en tu hilo, en mi desesperación aproveche el tema a mi necesidad.
Espero que Antonio Meza, pueda proporcionarte la solución como lo ha hecho conmigo.
Saludos a todos.
Amigo Antonio Meza.
Agradeciendo tu ayuda de publicar acá cualquier duda sobre FoxyDb
Tengo una pregunta.
Tengo el archivo tab_clientes con 1,340 registros
Si ejecuto this.odb.sql(“select * from tab_clientes order by id “,”tab_clientes”) se tarda 52 segundos en cargar
Si ejecuto this.odb.use(“tab_clientes”) Se tarda 56 segundo en cargar los datos.
Habrá alguna manera más rápida para cargar los datos que es una tabla pequeña y ahora con tablas que tengo de 25,000 registros ni idea tengo de cuánto tardará.
O que tendría que hacer para optimizar las respuestas de traer datos del servidor al usuarios.
Gracias por tu respuesta.
Att. Rafael Carballo
Gracias por toda la ayuda que me están brindando.
Como me indican, tengo que redefinir el concepto actual.
En este momento para los mantenimientos aplico dos formularios
1. Muestro todos los datos en un grid y a la vez pueden hacer búsqueda por cualquier campo de la tabla
2. Pueden crear un nuevo registro o modificar en el posicionado invocando la segunda pantalla y luego retornar a la pantalla anterior.
Esa es la razón por la cual presento todos los datos en especial les adiciono las imágenes para que me indiquen que debería mejorar.
Lo que sucedía es que con las dbf el filtro de búsqueda no tardaba mucho aprovechando la técnica Rushmore optimización
El código de búsqueda de filtro lo hago de la siguiente manera y es rápido en toda la tabla o cuando filtran el campo el usuario.
Ver el código al final de las imágenes.
El código hace búsqueda por defecto en todos los campos que defino en la primera parte, y si el usuario quiere un campo especifico desactiva esta opción y le presento los títulos según el grid para buscar en el la columna que el desee hacer la búsqueda, es la segunda parte del código.
PARAMETERS xbuscar
PUB_BUSCAR=xbuscar
thisform._sbuscar =PUB_BUSCAR
SELECT (this._tabla)
IF EMPTY(thisform._sbuscar)
SET FILTER TO
ELSE
IF EMPTY(THISFORM.obj_buscar1.CBOcampos.Value)
SET FILTER TO ;
AT(thisform._sbuscar,UPPER(STR(id)),1)>0 OR ;
AT(thisform._sbuscar,UPPER(f_idcod),1)>0 OR ;
AT(thisform._sbuscar,UPPER(f_codigo),1)>0 or ;
AT(thisform._sbuscar,UPPER(f_codigoi),1)>0 or ;
AT(thisform._sbuscar,UPPER(f_nombre),1)>0 OR ;
AT(thisform._sbuscar,UPPER(f_concepto),1)>0
****ENCONTRADOS
WITH THISFORM.GRid1
.Column1.DynamicForeColor = ;
'IIF(thisform._sBuscar $ UPPER(STR(id)),RGB(255,128,0),RGB(0,0,0))'
.Column2.DynamicForeColor = ;
'IIF(thisform._sBuscar $ UPPER(f_idcod),RGB(255,128,0),RGB(0,0,0))'
.Column3.DynamicForeColor = ;
'IIF(thisform._sBuscar $ UPPER(f_codigo),RGB(255,128,0),RGB(0,0,0))'
.Column4.DynamicForeColor = ;
'IIF(thisform._sBuscar $ UPPER(f_codigoi),RGB(255,128,0),RGB(0,0,0))'
.Column5.DynamicForeColor = ;
'IIF(thisform._sBuscar $ UPPER(f_nombre),RGB(255,128,0),RGB(0,0,0))'
.Column6.DynamicForeColor = ;
'IIF(thisform._sBuscar $ UPPER(f_concepto),RGB(255,128,0),RGB(0,0,0))'
.Column1.DynamicFontBold = ;
'IIF(thisform._sBuscar $ UPPER(STR(id)),.T.,.F.)'
.Column2.DynamicFontBold = ;
'IIF(thisform._sBuscar $ UPPER(f_idcod),.T.,.F.)'
.Column3.DynamicFontBold = ;
'IIF(thisform._sBuscar $ UPPER(f_codigo),.T.,.F.)'
.Column4.DynamicFontBold = ;
'IIF(thisform._sBuscar $ UPPER(f_codigoi),.T.,.F.)'
.Column5.DynamicFontBold = ;
'IIF(thisform._sBuscar $ UPPER(f_nombre),.T.,.F.)'
.Column6.DynamicFontBold = ;
'IIF(thisform._sBuscar $ UPPER(f_concepto),.T.,.F.)'
ENDWITH
ELSE
XTITULOGRID=THISFORM.obj_buscar1.Cbocampos.Value
xcol=thisform.grid1.columncount && cantidad de columnas del grid
FOR S=1 TO XCOL
S1=ALLTRIM(STR(S))
x_campo=(thisform.grid1.COLUMNS(s).CONTROLSOURCE) && obteniendo el nombre de campo con su tabla
XNCAMPO=SUBSTR(x_campo,ATC(".",x_campo)+1,LEN(x_campo)) && solo deja
XTCAMPO=thisform.grid1.column&s1..header1.Caption && cabecera titulo
XTIPOCAMPO=TYPE(FIELD(XNCAMPO)) && C=CARACTER,N=NUMERICO,D=FECHA,T=FECHA HORA,L=LOGICO,M=CAMPO MEMO,W=(BLOB), Y=MONEDA, B=DOUBLE
&& G=GENERAL I=ENTERO F=FLOAT V=VARCHAR
THISFORM.GRid1.Column&S1..header1.backcolor =RGB(192,192,192)
IF XTCAMPO=XTITULOGRID
THISFORM.GRid1.Column&S1..header1.backcolor =RGB(255,128,0)
DO CASE
CASE XTIPOCAMPO="C"
SET FILTER TO AT(thisform._sbuscar,UPPER(&XNCAMPO),1)>0
THISFORM.GRid1.Column&S1..DynamicForeColor ='IIF(thisform._sBuscar $ UPPER(XNCAMPO,RGB(255,128,0),RGB(0,0,0))'
THISFORM.GRID1.Column&S1..DynamicFontBold ='IIF(thisform._sBuscar $ UPPER(XNCAMPO,.T.,.F.)'
CASE XTIPOCAMPO="N"
SET FILTER TO AT(thisform._sbuscar,UPPER(STR(&XNCAMPO)),1)>0
THISFORM.GRID1.Column&S1..DynamicForeColor = ;
'IIF(thisform._sBuscar $ UPPER(STR(XNCAMPO),RGB(255,128,0),RGB(0,0,0))'
THISFORM.GRID1.Column&S1..DynamicFontBold = ;
'IIF(thisform._sBuscar $ UPPER(STR(XNCAMPO),.T.,.F.)'
CASE XTIPOCAMPO="D"
SET FILTER TO AT(thisform._sbuscar,UPPER(DTOC(&XNCAMPO)),1)>0
THISFORM.GRID1.Column&S1..DynamicForeColor = ;
'IIF(thisform._sBuscar $ UPPER(DTOC(XNCAMPO),RGB(255,128,0),RGB(0,0,0))'
THISFORM.GRid1.Column&S1..DynamicFontBold = ;
'IIF(thisform._sBuscar $ UPPER(DTOC(XNCAMPO),.T.,.F.)'
ENDCASE
EXIT
ENDIF
NEXT S
ENDIF
endif
THISFORM.GRid1.REFRESH
*
De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de alvarocastellar
Enviado el: lunes, 11 de septiembre de 2017 01:18 p.m.
Para: Comunidad de Visual Foxpro en Español <publice...@googlegroups.com>
Asunto: Re: [vfp] Re: Como configurar MariaDb para conectarse remotamente
Hola buenas tardes quiero sar tambien mi opinion para ayudar al amigo rafael, yo en lo personal manejo alguans tablas que tienen 15.000 registros y te aseguro que no demoran mas de tres segundos la carga de datos, como bien lo dice Hernan si la tabla contiene muchos campos no se recomienda usar '*' en la sentencia select sino los campos que se requieren mostrar.aparte de lo que han dicho todos te sugiero revises lo siguiente,
Con respecto a los índices si, todas las tablas tienen índice e id que es auto incremental en entero automático.
Esa es la llave principal.
Gracias por las aportaciones he venido queriendo migrar a las bases de datos desde hace más de 3 años y una vez cambie en mi erp todas las pantallas que invertí más de 6 meses y cuando comenzó a fallarme era con sql server 2005 me rendí y sentí que desperdicie 6 meses arduos me mantuve mejor con las dbf, pero ahora con esta herramienta que han puesto a nuestra disposición estoy animándome nuevamente.
De verdad agradezco mucho todo el apoyo, porque he visto en el foro que hay muchos como yo con el miedo de migrar sus aplicaciones de años y preguntan cuál sería el camino menos doloroso, y le comprendo porque a veces son aplicaciones de más de 10 años de irles invirtiendo tiempo, y cambiar todas las pantallas o desarrollarlo nuevamente, es algo que no lo concebimos por varias razones. Tiempo, dinero, y el temor que muchos tienen de que el zorro muera pronto.
El temor de perder algún día todo el código y hacer de nuevo nuestra aplicación en otra herramienta, es para muchos y era para mí el temor de invertir más tiempo, en el zorrito, pero he llegado a una conclusión, si la aplicación es presentable como los menús ribbon, funcional como un ccleaner que trabaja a nivel de pc y se conecta al internet internamente, que en este caso sería mariadb y los demás motores de bases, y ahora que lo podemos compilar a 64 bit y evitar el refox lo único que veo en nuestro zorro es que corra en multiplataforma, pero confiando en Dios y en muchos de la comunidad con tanta destreza en técnicas y conocimiento mayores de programación, creo que no estará tan lejos que alguien pueda agregarnos el compilador para hacerlo multiplataforma y sin cambiar código podamos correr nuestra aplicación en cualquier navegador.
Para algunos parece utópico, y que es no querer aceptar el cambio, podrán haber nuevas herramientas y nuevos lenguajes de programación pero el ser humano siempre ocupara las mismas cosas, lo único que hacemos es presentárselas de otra forma.
Y eso es lo que la comunidad ha hecho con el zorro, cada vez que salen nuevos estilos, alguien hace una clase, control o procedimiento y hace al zorro verse igual que las nuevas modas de programación.
Ejemplo : Estilo office, estilo Windows metro, estilo Android, estilo Outlook, Gráficos 2d, 3d, Código de Barras etc.
lo único es que muchos nos quedamos atrasados con malas prácticas de programación y por eso no le damos al zorro la calidad con la que podemos presentarlos ante estas herramientas.
Que es lo que me están indicando mis amigos con las nuevas prácticas que debo comenzar a utilizar.
Gracias a todos a la comunidad mundial que no somos pocos en habla hispana y otros idiomas que trabajamos con el zorro y hacen cosas maravillosa que son dignos de elogio ante tales modelos y diseños en los desarrollo.
Rafael Carballo
De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de alvarocastellar
Enviado el: lunes, 11 de septiembre de 2017 01:18 p.m.
Para: Comunidad de Visual Foxpro en Español <publice...@googlegroups.com>
Asunto: Re: [vfp] Re: Como configurar MariaDb para conectarse remotamente
Hola buenas tardes quiero sar tambien mi opinion para ayudar al amigo rafael, yo en lo personal manejo alguans tablas que tienen 15.000 registros y te aseguro que no demoran mas de tres segundos la carga de datos, como bien lo dice Hernan si la tabla contiene muchos campos no se recomienda usar '*' en la sentencia select sino los campos que se requieren mostrar.aparte de lo que han dicho todos te sugiero revises lo siguiente,
1. Muestro todos los datos en un grid y a la vez pueden hacer búsqueda por cualquier campo de la tabla
2. Pueden crear un nuevo registro o modificar en el posicionado invocando la segunda pantalla y luego retornar a la pantalla anterior.
Muchas gracias Amigo.
Hace unos años hice una aplicación con sqlserver 2000 de producción de materia prima.
La aplicación era funcional, pero como la cantidad de datos era grande, se degradaba el sistema y nunca pude aplicar los procedimientos almacenados que era la falla que tuve y aunque investigue ponerlo en práctica nunca fue lo que logre.
Por eso les agradezco mucho su ayuda, no es que no haya invertido tiempo en pasar a otro motor, pero tantas piedritas en el camino hizo que no siguiera.
Y de verdad este procedimiento que me has pasado, y en especial que es genérico, será de gran ayuda a mis procesos.
Gracias a todos por su apoyo.
Porque acabo de estar poniendo en práctica lo que se me dijo definir campos pero por ejemplo:
oDb.sql(“Select id,f_codigo,f_nombre from tab_producto order by id “,”tab_producto”)
Con 9,997 registros se me tarda 1:10 un minuto diez segundos.
Espero mejorar ese tiempo con el procedimiento almacenado en especial para reportes que hay que trabajar con históricos.
Gracias nuevamente.
Gracias Amigo.
La tabla tiene el índice ID y he hecho la prueba en el servidor de base de datos la ejecución de la siguiente instrucción con 1,500 registros
Select id,f_cuenta,f_nombre from tab_clientes order by id
En la base no se tarda ni un segundo
oDb.sql(“Select id,f_cuenta,f_nombre from tab_clientes order by id”,”tab_clientes”)
Se me tarda 53 segundos.
Que estaré hacienda mal, la velocidad con HeidiSql es fenomenal, pero al ejecutarlo desde visual foxpro hace ese tiempo y estoy tomando en cuenta todas las recomendaciones hechas.
O será que he instalado mal MariaDB o el conector porque si ustedes dicen que no es normal ese tiempo, algo estare haciendo mal no en la instrucción porque es la misma sino alguna configuración???
Pregunta talvez sea eso :
Hay diferencia de me conecto como localhost ó 127.0.0.1
De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Daniel Sánchez
Enviado el: miércoles, 13 de septiembre de 2017 07:48 a.m.
Para: Comunidad de Visual Foxpro en Español <publice...@googlegroups.com>
Asunto: Re: [vfp] Re: Como configurar MariaDb para conectarse remotamente
Por la cantidad de registros que indicas nunca me ha pasado que demore casi un minuto en traerme los datos ni siquiera con conexión remota e la nube o en otro servidor por internet, y en cuanto a sql2000 es un excelente motor de bd que hasta la actualidad en algunos clientes tengo instalado con varios miles de registros en sus tablas, con bd de 3 o 5 gb corriendo con la misma velocidad que el primer día, el tema de los indices es importante para mantener la mejor performance en cualquier bd.
Así que creo que el problema no va por ahí, ahora en cuanto a traer todos los datos de una tabla no es lo más recomendado pero no falta por ahí un cliente especial que así lo requiera, pero en esos casos no le traigo todos los datos apenas abre el formulario, solo si no pone nada en los filtros de consulta muestra todo, si hay mucha data esta pueda demorar más de lo que el quisiera, así que la próxima vez ya sabe a que atenerse con consultas de ese tipo.
Saludos
El 12 de septiembre de 2017, 4:08, Rafael Carballo <rafca...@gmail.com> escribió:
Muchas gracias Amigo.
Hace unos años hice una aplicación con sqlserver 2000 de producción de materia prima.
La aplicación era funcional, pero como la cantidad de datos era grande, se degradaba el sistema y nunca pude aplicar los procedimientos almacenados que era la falla que tuve y aunque investigue ponerlo en práctica nunca fue lo que logre.
Por eso les agradezco mucho su ayuda, no es que no haya invertido tiempo en pasar a otro motor, pero tantas piedritas en el camino hizo que no siguiera.
Y de verdad este procedimiento que me has pasado, y en especial que es genérico, será de gran ayuda a mis procesos.
Gracias a todos por su apoyo.
Porque acabo de estar poniendo en práctica lo que se me dijo definir campos pero por ejemplo:
oDb.sql(“Select id,f_codigo,f_nombre from tab_producto order by id “,”tab_producto”)
Con 9,997 registros se me tarda 1:10 un minuto diez segundos.
Espero mejorar ese tiempo con el procedimiento almacenado en especial para reportes que hay que trabajar con históricos.
Gracias nuevamente.
Antonio
Si tengo instalado todo en la misma máquina.
Ocupo Mariadb 10.2.6 winx64 y mysql.connector-5.1.13 win32.msi en Windows 7 de 64 bit porque el ODBC de 64 no me conecta y en window xp 32 bit ambos se ejecutaron excelentemente a la velocidad de la luz.
He detectado el problema que es el ODBC pero no sé cómo solucionarlo.
1. Instale la aplicación en Windows xp 32 bit e instale ODBC 32 y mariadb 32 y se ejecutó el archivo de clientes en menos de 1 segundo.
2. Lo ejecuto en mi pc que es Windows 7 64bit y se tarda 1.5 minutos
Revise y desístale MariaDB y ODBC
Al instalar MariaDB de 64 bit corre con HeidiSQL igual que window xp
Instalo ODBC de 64 bit y no puedo conectarme desde FoxyDb pero en el controlador de ODBC directamente hago un test a las base de datos que me conecta y se conecta sin problema
Pero en el programa no encuentra el nombre de la ODBC y me genera un error de no conexión.
Instalo la ODBC de 32 bit y ya puedo conectarme sin problema a la base de datos pero sigo con el problema de lentitud al bajar datos.
La conclusión que he llegado es que es la incopatibilidad de ODBC de 32 bit con Windows 64 bit
Pregunta.
Se resolvería esto si paso Visual Foxpro 10 con 64 bit para trabajar y me tome el ODBC de 64 bit y solventar el problema o siempre me generara el problema de no poderse conectar al ODBC de 64 bit.
Agradecería tu respuesta Antonio, dime como como me conectaría al drvers de 64 bit o hay otra solución.
Saludos
Rafael Carballo
Instalo
De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Antonio Meza
Enviado el: miércoles, 13 de septiembre de 2017 01:39 p.m.
Para: Comunidad de Visual Foxpro en Español <publice...@googlegroups.com>
Asunto: Re: [vfp] Re: Como configurar MariaDb para conectarse remotamente
Que versión de Driver Odbc usas, VFP esta instalado en la misma maquina que MariaDb y el HeidiSql también esta instalado en la misma maquina?
De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de alvarocastellar
Enviado el: lunes, 11 de septiembre de 2017 04:01 p.m.
Para: Comunidad de Visual Foxpro en Español <publice...@googlegroups.com>
Asunto: Re: [vfp] Re: Como configurar MariaDb para conectarse remotamente
Hol amigo lo que dices es ciertyo y mi consejo es que no renuncies, en mi caso personal te comento que hace unos dos meses comenze la migracion de mi base de datos Dbf a mariaDB y la verdad el comienzo es duro pero despues que vas cogiendo el ritmo todo es mas sencillo. Otro consejo que te doy es que uses procedimientos almacenado yo lo hago y el tiempo de respuesta es mucho mejor. de otro lado veo que usas set filter a mi modo de ver no es lo mas optimo. lo ideal es que uses una sentencia Select con clausula Where y Like es mi consejo. para ayudarte un poco te regalo un procedimiento almacenado que recibe como parametro el nombre de la tabla, los campos, where y order by, tambien si lo requieres haces join. te lo paso. Te sirve para devolver casi que cualquier informacion de tus tablas.