In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Pasando de DBF a MySQL

Foro público de Xailer en español
Responder
ddupre
Mensajes: 329
Registrado: Lun Nov 12, 2007 3:53 pm

Pasando de DBF a MySQL

Mensaje por ddupre »

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body bgcolor="#ffffff" text="#000000">
Â
Hola foro:<br>
<br>
Estoy intentando dejar el uso de DBF's para cambiar por MySQL y he
estado estudiando en varias web de dicho producto, pero no logro
hacerme una relaciÃn entre algunos conceptos de mis viejas DBF con esta
nueva BD, o porque no lleguà a algÃn capÃtulo donde me quede claro o
porque no existen. Entiendo que es bastante diferente la forma de
trabajo pero igualmente estoy tratando de buscar las similitudes en
cuanto a conceptos.<br>
Aquà pongo algunos con su correspondiente comando o funciÃn para DBF's
y me gustarÃa que alguien me de una mano para poner el equivalente (si
lo hay ) en MySQL.<br>
<br>
1) Determinar el Ãndice activo. DBSETORDER() o SET ORDER .....<br>
<br>
2) Buscar un determinado registro para saber si existe o no. DBSEEK()
preguntando por el valor de retorno o SEEK con su correspondiente
FOUND() sobre el indice activo. He visto en un mensaje anterior en este
foro una idea de Josà Alfonso Suarez Moreno que dice asi: <font
color="#333399">SELECT count(*) AS hay_registros FROM tabla WHERE
codigo="23"
,Si hay_registros es != 0 es que hay al menos una fila con el valor 23
en el campo codigo</font>, pero no me queda claro quà indice se estÃ
utilizando o si se esta recorriendo toda la tabla secuencialmente para
encontrar el valor.<br>
<br>
3) Crear un indice cuya clave esta formada por campos numÃricos y
carÃcter. INDEX ON str(mi_numero)+mi_caracter TO mi_indice<br>
<br>
<br>
Desde ya muchas gracias<br>
<br>
Un saludo<br>
Daniel<br>
</body>
</html>
buzonjmartial
Mensajes: 100
Registrado: Vie Abr 10, 2009 11:02 pm

Pasando de DBF a MySQL

Mensaje por buzonjmartial »

Hola Daniel,
Voy a intentar aclararte un poco como funcionan estos casos en SQL.
- SQL no tiene í­ndices activos tal como los conoces en DBF. Es más
aunque no tuvieras í­ndices podrí­as buscar lo que quisieras.
El concepto es:
Pides que campos necesitas ejemplo: SELECT razonsocial, direccion
indicas de qué tabla estás pidiendo esos campos: FROM clientes
le indicas un filtro para que te busque solamente los que cumplan la
condición que buscas:
WHERE codigo='0001" ( Verás que no hace falta traerse ese campo)
o contenido en: WHERE razonsocial LIKE '%GARCIA%'
Y que te devuelva la búsqueda ordenada como tú quieras, incluso sin usar
í­ndices: ORDER BY razonsocial ASC ó DESC
Como ves puedes pedir lo que quieras, es el motor SQL el que se encarga
de buscar lo que le pidas.
Quedarí­a: SELECT razonsocial, direccion FROM clientes WHERE
razonsocial LIKE '%GARCIA%' ORDER BY razonsocial
Esto es un ejemplo muy básico.Te recomiendo que mires todas las
posibilidades del comando SELECT y practiques desde el administrador de
MySQL en tu caso, yo uso personalmente posgresql.
Si necesitas más aclaraciones, ve preguntando e intentaremos aclarártelas.
Daniel Du Pré escribió:
> Hola foro:
>
> Estoy intentando dejar el uso de DBF's para cambiar por MySQL y he
> estado estudiando en varias web de dicho producto, pero no logro hacerme
> una relación entre algunos conceptos de mis viejas DBF con esta nueva
> BD, o porque no llegué a algún capí­tulo donde me quede claro o porque no
> existen. Entiendo que es bastante diferente la forma de trabajo pero
> igualmente estoy tratando de buscar las similitudes en cuanto a conceptos.
> Aquí­ pongo algunos con su correspondiente comando o función para DBF's y
> me gustarí­a que alguien me de una mano para poner el equivalente (si lo
> hay ) en MySQL.
>
> 1) Determinar el í­ndice activo. DBSETORDER() o SET ORDER .....
>
> 2) Buscar un determinado registro para saber si existe o no. DBSEEK()
> preguntando por el valor de retorno o SEEK con su correspondiente
> FOUND() sobre el indice activo. He visto en un mensaje anterior en este
> foro una idea de José Alfonso Suarez Moreno que dice asi: SELECT
> count(*) AS hay_registros FROM tabla WHERE codigo="23" ,Si hay_registros
> es != 0 es que hay al menos una fila con el valor 23 en el campo codigo,
> pero no me queda claro qué indice se está utilizando o si se esta
> recorriendo toda la tabla secuencialmente para encontrar el valor.
>
> 3) Crear un indice cuya clave esta formada por campos numéricos y
> carácter. INDEX ON str(mi_numero)+mi_caracter TO mi_indice
>
>
> Desde ya muchas gracias
>
> Un saludo
> Daniel
Un Saludo,
Joaquín Martínez
PEDRO DE LEON RODAS[3]
Mensajes: 266
Registrado: Mar Oct 28, 2008 4:41 am

Pasando de DBF a MySQL

Mensaje por PEDRO DE LEON RODAS[3] »

Te paso algunas sugerencias que yo utilizo en mis proyectos
2) Buscar un determinado registro para saber si existe o no. DBSEEK() preguntando por el valor de retorno o SEEK con su correspondiente FOUND() sobre el indice activo.
METHOD CODIGOKeyDown( oSender, nKey, nFlags ) CLASS CAPTURA_INVENTARIO
MemVar Var_codigo
Local Toma
Private Var_codigo
if nKey = 13
Var_codigo=::Codigo:Value
Toma=::Midb:Query("SELECT * FROM Productos where codigo='&Var_codigo' ) //// Obtengo el registro deseado
If toma:Reccount()=0 //// Si es cero logicamente quiere decir que no existe ese registro
MsgStop("El codigo del producto no existe")
::Codigo:Setfocus()
Return .t.
Endif
::Descripcion:Value=Toma:Descripcion
Etc.....
Endif
Y si quieres Buscar un registro numerico lo puedes hacer asi
Por ejemplo si quieres buscar el numero de un cliente (Logicamente tiene que ser numerico)
El campo se llama numero_cliente con dato numerico y longitud de 8
MemVar Var_cliente
Local Toma
Private Var_cliente
if nKey = 13
Var_cliente=Str(::Numero_Cliente:Value,8)
Toma=::Midb:Query("SELECT * FROM Clientes where numero_cliente='&Var_cliente' ) //// Obtengo el registro deseado
If toma:Reccount()=0 //// Si es cero logicamente quiere decir que no existe ese registro
MsgStop("El numero de cliente no existe")
::numero_cliente:Setfocus()
Return .t.
Endif
::Direccion:Value=Toma:Direccion
Etc.....
Endif
Y te digo algo mas.
Es una maravilla trabajar con Mysql, es rapido, estable y seguro en procesar informacion.
E incluso puedes crear archivos indices desde un manipulador de base de datos, o sea al crear tu base de datos y en tus tablas.
De esta manera Xailer toma en cuenta los indices sin necesidad que tu le indiques, y creeme las consultas las hace mucho mas rapidas.
Aun a nuestro pesar, ya es tiempo de dejar a nuestros queridos DBFS.
Cualquier consulta o dudas, estoy a tus ordenes.
Dios te bendiga.
--
ddupre
Mensajes: 329
Registrado: Lun Nov 12, 2007 3:53 pm

Pasando de DBF a MySQL

Mensaje por ddupre »

Joaquí­n:
Muchas gracias, me ha quedado muy claro y me ayuda a ir cambiando el chip.
Luego de ver las opciones de SELECT no me queda claro cual es la forma
más optima de saber si existe un dato en un registro para, por ejemplo,
poder hacer la validación a la hora de insertar uno nuevo.
Nuevamente gracias
Un saludo
Joaquí­n Martí­nez. escribió:
> Hola Daniel,
>
> Voy a intentar aclararte un poco como funcionan estos casos en SQL.
>
> - SQL no tiene í­ndices activos tal como los conoces en DBF. Es más
> aunque no tuvieras í­ndices podrí­as buscar lo que quisieras.
> El concepto es:
>
> Pides que campos necesitas ejemplo: SELECT razonsocial, direccion
> indicas de qué tabla estás pidiendo esos campos: FROM clientes
> le indicas un filtro para que te busque solamente los que cumplan la
> condición que buscas:
>
> WHERE codigo='0001" ( Verás que no hace falta traerse ese campo)
>
> o contenido en: WHERE razonsocial LIKE '%GARCIA%'
>
> Y que te devuelva la búsqueda ordenada como tú quieras, incluso sin usar
> í­ndices: ORDER BY razonsocial ASC ó DESC
>
> Como ves puedes pedir lo que quieras, es el motor SQL el que se encarga
> de buscar lo que le pidas.
>
> Quedarí­a: SELECT razonsocial, direccion FROM clientes
> WHERE razonsocial LIKE '%GARCIA%' ORDER BY razonsocial
>
> Esto es un ejemplo muy básico.Te recomiendo que mires todas las
> posibilidades del comando SELECT y practiques desde el administrador de
> MySQL en tu caso, yo uso personalmente posgresql.
>
> Si necesitas más aclaraciones, ve preguntando e intentaremos aclarártelas.
>
>
> Daniel Du Pré escribió:
>> Hola foro:
>>
>> Estoy intentando dejar el uso de DBF's para cambiar por MySQL y he
>> estado estudiando en varias web de dicho producto, pero no logro
>> hacerme una relación entre algunos conceptos de mis viejas DBF con
>> esta nueva BD, o porque no llegué a algún capí­tulo donde me quede
>> claro o porque no existen. Entiendo que es bastante diferente la forma
>> de trabajo pero igualmente estoy tratando de buscar las similitudes en
>> cuanto a conceptos.
>> Aquí­ pongo algunos con su correspondiente comando o función para DBF's
>> y me gustarí­a que alguien me de una mano para poner el equivalente (si
>> lo hay ) en MySQL.
>>
>> 1) Determinar el í­ndice activo. DBSETORDER() o SET ORDER .....
>>
>> 2) Buscar un determinado registro para saber si existe o no. DBSEEK()
>> preguntando por el valor de retorno o SEEK con su correspondiente
>> FOUND() sobre el indice activo. He visto en un mensaje anterior en
>> este foro una idea de José Alfonso Suarez Moreno que dice asi: SELECT
>> count(*) AS hay_registros FROM tabla WHERE codigo="23" ,Si
>> hay_registros es != 0 es que hay al menos una fila con el valor 23 en
>> el campo codigo, pero no me queda claro qué indice se está utilizando
>> o si se esta recorriendo toda la tabla secuencialmente para encontrar
>> el valor.
>>
>> 3) Crear un indice cuya clave esta formada por campos numéricos y
>> carácter. INDEX ON str(mi_numero)+mi_caracter TO mi_indice
>>
>>
>> Desde ya muchas gracias
>>
>> Un saludo
>> Daniel
ddupre
Mensajes: 329
Registrado: Lun Nov 12, 2007 3:53 pm

Pasando de DBF a MySQL

Mensaje por ddupre »

Pedro:
Mil gracias por tu ayuda, estos ejemplos realmente me aclaran mucho.
Y es verdad, aunque en el fondo no quiero, debo ir dejando los DBS's
Un Saludo
PEDRO DE LEON RODAS escribió:
> Te paso algunas sugerencias que yo utilizo en mis proyectos
>
> 2) Buscar un determinado registro para saber si existe o no. DBSEEK()
> preguntando por el valor de retorno o SEEK con su correspondiente
> FOUND() sobre el indice activo.
>
> METHOD CODIGOKeyDown( oSender, nKey, nFlags ) CLASS CAPTURA_INVENTARIO
> MemVar Var_codigo
> Local Toma
> Private Var_codigo
>
> if nKey = 13
> Var_codigo=::Codigo:Value
> Toma=::Midb:Query("SELECT * FROM Productos where
> codigo='&Var_codigo' ) //// Obtengo el registro deseado
> If toma:Reccount()=0 //// Si es cero logicamente quiere decir
> que no existe ese registro
>
> MsgStop("El codigo del producto no existe")
> ::Codigo:Setfocus()
> Return .t.
> Endif
>
> ::Descripcion:Value=Toma:Descripcion
>
> Etc.....
>
> Endif
>
> Y si quieres Buscar un registro numerico lo puedes hacer asi
>
> Por ejemplo si quieres buscar el numero de un cliente (Logicamente tiene
> que ser numerico)
> El campo se llama numero_cliente con dato numerico y longitud de 8
>
>
> MemVar Var_cliente
> Local Toma
> Private Var_cliente
>
> if nKey = 13
> Var_cliente=Str(::Numero_Cliente:Value,8)
> Toma=::Midb:Query("SELECT * FROM Clientes where
> numero_cliente='&Var_cliente' ) //// Obtengo el registro deseado
> If toma:Reccount()=0 //// Si es cero logicamente quiere decir
> que no existe ese registro
>
> MsgStop("El numero de cliente no existe")
> ::numero_cliente:Setfocus()
> Return .t.
> Endif
>
> ::Direccion:Value=Toma:Direccion
>
> Etc.....
>
> Endif
>
>
> Y te digo algo mas.
>
> Es una maravilla trabajar con Mysql, es rapido, estable y seguro en
> procesar informacion.
>
> E incluso puedes crear archivos indices desde un manipulador de base de
> datos, o sea al crear tu base de datos y en tus tablas.
> De esta manera Xailer toma en cuenta los indices sin necesidad que tu le
> indiques, y creeme las consultas las hace mucho mas rapidas.
>
> Aun a nuestro pesar, ya es tiempo de dejar a nuestros queridos DBFS.
>
> Cualquier consulta o dudas, estoy a tus ordenes.
>
> Dios te bendiga.
>
Fernando Leal
Mensajes: 294
Registrado: Jue Mar 13, 2008 3:03 pm

Pasando de DBF a MySQL

Mensaje por Fernando Leal »

Pedro,
Cuando eliminas información de la base de datos... ¿Cual es el equivalente al Pack de clipper?
Otra... cuando obtienes un Select y lo visualizas en un browse ¿Puedes hacer una búsqueda incremental?
Yo tambien estoy en el cambio de las DBFs y estoy viendo SqLite, pero no es accesible via internet.
Gracias
Fernando
--
Avatar de Usuario
Carlos Ortiz
Mensajes: 872
Registrado: Mié Jul 01, 2009 5:44 pm
Ubicación: Argentina - Córdoba
Contactar:

Pasando de DBF a MySQL

Mensaje por Carlos Ortiz »

Cuando haces un delete en una tabla sql dicho registro desaparece, yo particularmente en algunos casos manejo ESTADOS (Activo o Dado de baja).
Por supuesto que puedes hacer búsquedas incremenales, pues al resultado de un select le puedes tirar a un oDataSet y hacer lo que gustes.
//---------------------------------------------------------- ------------------------------------------------------------ -
METHOD BuscarPorDescripcionDS( cNombre, oDataSet, cFiltro ) CLASS Articulos
//---------------------------------------------------------- ------------------------------------------------------------ -
oDataSet := oDataSet
cNombre := upper(alltrim(cNombre))
cFiltro := if( empty(cFiltro),""," and "+cFiltro )
oDataSet := AppData:oSql:QU("select descripcion, codigo, idArticulo from articulos where descripcion like '"+cNombre+"%'"+cFiltro+" order by descripcion")
RETURN NIL
//---------------------------------------------------------- --------
METHOD QU( cSelect, oDataSet ) CLASS Sql
//---------------------------------------------------------- --------
local aDatos
LimpiarError()
oDataSet:=oDataSet
IF empty(cSelect)
CargarError("Falta el comando SQL a ejecutar")
RETURN {}
ENDIF
oDataSet := AppData:oOdbcDS:Query( cSelect )
RETURN oDataSet
--
ddupre
Mensajes: 329
Registrado: Lun Nov 12, 2007 3:53 pm

Pasando de DBF a MySQL

Mensaje por ddupre »

Fernando:
En lo poco que yo se, te paso este link que es uno de los que estoy
utilizando para estudiar.
http://mysql.conclase.net/curso/index.php?sen=TRUNCATE
En el podrás encontrar la explicación de una sentencia que según
entiendo es equivalente al PACK.
Saludos
Daniel.
Fernando Leal escribió:
> Pedro,
>
> Cuando eliminas información de la base de datos... ¿Cual es el
> equivalente al Pack de clipper?
> Otra... cuando obtienes un Select y lo visualizas en un browse ¿Puedes
> hacer una búsqueda incremental?
>
> Yo tambien estoy en el cambio de las DBFs y estoy viendo SqLite, pero
> no es accesible via internet.
>
> Gracias
> Fernando
>
PEDRO DE LEON RODAS[3]
Mensajes: 266
Registrado: Mar Oct 28, 2008 4:41 am

Pasando de DBF a MySQL

Mensaje por PEDRO DE LEON RODAS[3] »

Para borrar un registro yo uso los siguientes metodos.
Si deseo borrar varios registros uso lo siguiente
METHOD CODIGOKeyDown( oSender, nKey, nFlags ) CLASS CAPTURA_INVENTARIO
MemVar Var_codigo
Local Toma
Private Var_codigo
if nKey = 13
Var_codigo=::Codigo:Value
Toma=::Midb:Execute("Delete FROM productos where codigo='&Var_codigo' ) //// Se borrar varios registros con el mismo codigo del producto
Etc.....
Endif
Si quiero borrar un solo registro, yo uso esto:
METHOD CODIGOKeyDown( oSender, nKey, nFlags ) CLASS CAPTURA_INVENTARIO
MemVar Var_codigo
Local Toma
Private Var_codigo
if nKey = 13
Var_codigo=::Codigo:Value
Toma=::Midb:Query("SELECT * FROM Productos where codigo='&Var_codigo' ") //// Obtengo el registro deseado
If toma:Reccount()=0 //// Si es cero logicamente quiere decir que no existe ese registro
MsgStop("El codigo del producto no existe")
::Codigo:Setfocus()
Return .t.
Endif
Toma:Delete() //// Aqui se borrar el registro
Etc.....
Endif
Hasta donde se en Mysql como en Sqlite se borran fisicamente el registro, o sea no es necesario hacer un Pack como en los DBFS
Espero les sirva estos ejemplos
Dios les Bendiga.
--
Fernando Leal
Mensajes: 294
Registrado: Jue Mar 13, 2008 3:03 pm

Pasando de DBF a MySQL

Mensaje por Fernando Leal »

Carlos, Daniel, Pedro.
¿Por donde hay que entrarle :-) ?
¿Instalaron un paquete como XAMPP ??
Gracias
Fernando
"PEDRO DE LEON RODAS" <7773613810@prodigy.net.mx> escribió en el mensaje de noticias news:[email=49e22b3d@svctag-j7w3v3j....]49e22b3d@svctag-j7w3v3j....[/email]
Para borrar un registro yo uso los siguientes metodos.
Si deseo borrar varios registros uso lo siguiente
METHOD CODIGOKeyDown( oSender, nKey, nFlags ) CLASS CAPTURA_INVENTARIO
MemVar Var_codigo
Local Toma
Private Var_codigo
if nKey = 13
Var_codigo=::Codigo:Value
Toma=::Midb:Execute("Delete FROM productos where codigo='&Var_codigo' ) //// Se borrar varios registros con el mismo codigo del producto
Etc.....
Endif
Si quiero borrar un solo registro, yo uso esto:
METHOD CODIGOKeyDown( oSender, nKey, nFlags ) CLASS CAPTURA_INVENTARIO
MemVar Var_codigo
Local Toma
Private Var_codigo
if nKey = 13
Var_codigo=::Codigo:Value
Toma=::Midb:Query("SELECT * FROM Productos where codigo='&Var_codigo' ") //// Obtengo el registro deseado
If toma:Reccount()=0 //// Si es cero logicamente quiere decir que no existe ese registro
MsgStop("El codigo del producto no existe")
::Codigo:Setfocus()
Return .t.
Endif
Toma:Delete() //// Aqui se borrar el registro
Etc.....
Endif
Hasta donde se en Mysql como en Sqlite se borran fisicamente el registro, o sea no es necesario hacer un Pack como en los DBFS
Espero les sirva estos ejemplos
Dios les Bendiga.
--
ddupre
Mensajes: 329
Registrado: Lun Nov 12, 2007 3:53 pm

Pasando de DBF a MySQL

Mensaje por ddupre »

Fernando:
Yo empece por bajarme MySQL desde aquí­:
http://www.mysql.com/
Te comento que instalarlo y configurarlo al menos con las opciones por
defecto, me resultó muy fácil, y como manejador de la BD (lo que serí­a
el equivalente al DBU de Clipper) utilicé lo propio de MySQL, que se
llama MySQL Administrator y MySQL QueryBrowser, Actualmente estoy
probando SQLYog
http://www.webyog.com/en/index.php?ref= ... ty.aboutus
Luego comencé a estudiar aquí­:
http://www.maestrosdelweb.com/editorial/tutsql1/
Y también he leí­do de aquí­:
http://www.mysql-hispano.org/
Actualmente estoy estudiando aquí­:
http://mysql.conclase.net/curso/index.php?cap=000
Espero que estos links te sirvan a, a mi me están ayudando mucho.
Saludos
Daniel.
Fernando Leal escribió:
> Carlos, Daniel, Pedro.
>
> ¿Por donde hay que entrarle :-) ?
>
> ¿Instalaron un paquete como XAMPP ??
>
> Gracias
> Fernando
>
>
>
>
> "PEDRO DE LEON RODAS" <7773613810@prodigy.net.mx
> <mailto:7773613810@prodigy.net.mx>> escribió en el mensaje de
> noticias news:[email=49e22b3d@svctag-j7w3v3j.....]49e22b3d@svctag-j7w3v3j.....[/email]
> Para borrar un registro yo uso los siguientes metodos.
>
> Si deseo borrar varios registros uso lo siguiente
>
> METHOD CODIGOKeyDown( oSender, nKey, nFlags ) CLASS CAPTURA_INVENTARIO
> MemVar Var_codigo
> Local Toma
> Private Var_codigo
>
> if nKey = 13
> Var_codigo=::Codigo:Value
> Toma=::Midb:Execute("Delete FROM productos where
> codigo='&Var_codigo' ) //// Se borrar varios registros con el mismo
> codigo del producto
> Etc.....
>
> Endif
>
>
> Si quiero borrar un solo registro, yo uso esto:
>
> METHOD CODIGOKeyDown( oSender, nKey, nFlags ) CLASS CAPTURA_INVENTARIO
> MemVar Var_codigo
> Local Toma
> Private Var_codigo
>
> if nKey = 13
> Var_codigo=::Codigo:Value
> Toma=::Midb:Query("SELECT * FROM Productos where
> codigo='&Var_codigo' ") //// Obtengo el registro deseado
> If toma:Reccount()=0 //// Si es cero logicamente quiere
> decir que no existe ese registro
>
> MsgStop("El codigo del producto no existe")
> ::Codigo:Setfocus()
> Return .t.
> Endif
>
> Toma:Delete() //// Aqui se borrar el registro
> Etc.....
>
> Endif
>
>
> Hasta donde se en Mysql como en Sqlite se borran fisicamente el
> registro, o sea no es necesario hacer un Pack como en los DBFS
>
> Espero les sirva estos ejemplos
>
> Dios les Bendiga.
>
PEDRO DE LEON RODAS[3]
Mensajes: 266
Registrado: Mar Oct 28, 2008 4:41 am

Pasando de DBF a MySQL

Mensaje por PEDRO DE LEON RODAS[3] »

Fernando, Saludos.
Te dejo este link, es bueno para la instalacion de Mysql
http://www.ajpdsoft.com/modules.php?nam ... file=artic le&sid=137
Y esto lo puedes poner en tu formulario Principal:
AppData:AddData( "DBabarrotes", "")
WITH OBJECT ::Mi_bd
:cHost:="localhost" /////// esto es para que lo trabajes en tu pc
o sea localmente
:cDatabase:="abarrotes" ////// nombre de la base de datos
:cUser:="root" //// El usuario
:cPassword:="password" //// aqui escribe el password que pusistes al
instalar Mysql
IF !:Connect()
MSGSTOP('Error al Conectar a la Base de Datos ','Error')
QUIT
else
msginfo("Se ha conectado con el servidor")
ENDIF
// Variable con la conexion a la base da datos para usar en todos los
formularios
AppData:AddData( "DBabarrotes",::Mi_bd)
END WITH
Para esto en tu formulario principal tienes que agregar un TmysqlDataSource
por ejemplo que se llame Mi_bd
Solo pones el nombre ( Mi_bd ) o lo que tu quieras poner.
Despues en tus formularios agregas un TsqlQuery o TsqlTable y pones en
OnInitialize lo siguiente:
Si usas TsqlTable pones
::oTsqlTable:oDataSource=AppData:DBabarrotes
::oTsqlTable:lOpen=.t.
O si usas TsqlQuery pones
::oTsqlQuery:oDataSource=AppData:DBabarrotes
Te pongo este ejemplo con Tsqlquery que en cVarname se llame proceso
METHOD CODIGOKeyDown( oSender, nKey, nFlags ) CLASS CAPTURA_INVENTARIO
MemVar Var_codigo
Local Toma
Private Var_codigo
if nKey = 13
Var_codigo=::Codigo:Value
::Proceso:lOpen=.f.
::Proceso:Query("SELECT * FROM Productos where codigo='&Var_codigo' ) ////
Obtengo el registro deseado
::Proceso:lOpen=.t
..
If ::Proceso:Reccount()=0 //// Si es cero logicamente quiere decir
que no existe ese registro
MsgStop("El codigo del producto no existe")
::Codigo:Setfocus()
Return .t.
Endif
::Descripcion:Value=Toma:Descripcion
Etc.....
Endif
Ahora si tomas el ejemplo con una varible de memoria seria asi:
METHOD CODIGOKeyDown( oSender, nKey, nFlags ) CLASS CAPTURA_INVENTARIO
MemVar Var_codigo
Local Toma
Private Var_codigo
if nKey = 13
Var_codigo=::Codigo:Value
Toma=AppData:Dbabarotes:Query("SELECT * FROM Productos where
codigo='&Var_codigo' ) //// Obtengo el registro deseado
If toma:Reccount()=0 //// Si es cero logicamente quiere decir que
no existe ese registro
MsgStop("El codigo del producto no existe")
::Codigo:Setfocus()
Return .t.
Endif
::Descripcion:Value=Toma:Descripcion
Etc.....
Endif
Espero no enredarme en la explicacion.
Dios les bendiga.
Gabriel Ornelas
Mensajes: 24
Registrado: Dom Jun 05, 2005 6:16 pm

Pasando de DBF a MySQL

Mensaje por Gabriel Ornelas »

Este blog tambien esta interasante y seguro de ayuda de mucho
http://sqlcmd.blogspot.com/
Saludos
Responder