lunes, 23 de febrero de 2009

Comentarios ADO-TMYSQL

Conversación entre Armando y un servidor.

Armando dice:
Epa, paisano
Estas despierto ?
!! [INCOS] william morales dice:
quiubo mi estimado
Armando dice:
Saludando a las estrellas !
!! [INCOS] william morales dice:
gracias amigo
igualmente
wmormar.blogspot.com
ahi mi blog y estoy escribiendo sobre la tmysql
haz leido algo?
Armando dice:
Claro, no me lo pierdo
Quiero tener otra altenativa
!! [INCOS] william morales dice:
hoy me toco escribir
Armando dice:
Sip, ya lo vi
Perooooooo
Resulta que en la carpeta donde tengo instalado el servidor no hay carpeta de INCLUDES
O sera que no la veo ?
!! [INCOS] william morales dice:
eso depende de como hayas instalado el server
Armando dice:
Ok ok
Puede ser ahi el problema
!! [INCOS] william morales dice:
preo puedo colgar los includes
Armando dice:
Pero deben coincidir con la versión que tengo instalada de MySql, no ?
!! [INCOS] william morales dice:
no necesariamente
pero de preferencia, desde luego
Armando dice:
Ok
Si no recuerdo mal, instale MySql como SERVER y creo que debería ser como DEVELOPER
Sera cierto ?
!! [INCOS] william morales dice:
asi es
Armando dice:
Bueno, al menos ya se donde esta mi falla
ahora, sería mucha molestia si pasas los INLCUDE ?
!! [INCOS] william morales dice:
dja colgarlo al blog
para que los demás lo tengan
Armando dice:
Ok, gracias
!! [INCOS] william morales dice:
que te parece?
Armando dice:
Como te decia, a mi me parece excelente tener otra alternativa
No me cierro a que todo sea ADO
!! [INCOS] william morales dice:
yo he usado tmysql, ADO no le tomo cariño aun
pero no lo descarto
Armando dice:
Tengo otra pregun tonta
Usando la TMySql al hacer una SELECT que se crea ?
!! [INCOS] william morales dice:
algo como un recordset
Armando dice:
Me explico, con ADO se crea un record set (Tabla)
Pero si entiendo bien es un ARRAY, cierto ?
!! [INCOS] william morales dice:
solo el registro
lo demás no
es el recordset
Armando dice:
No me queda claro, disculpa master
!! [INCOS] william morales dice:
bueno, hay dois formas
puedes usar la forma de arreglo
y la forma del recordset
Armando dice:
Ok ok
Fijate que tambien en ADO tienes ambas posibilidades
Hasta ahi vamos bien
Volviendo al tema, por ejemplo, yo ya estoy acostumbrado al record set
usando la TMySql lo puedo seguir trabajando igual ?
!! [INCOS] william morales dice:
cambia un poco
como cargas los datos desde ADO?
Armando dice:
Como cargo los datos al Browse ?
O te refieres al SELECT ?
!! [INCOS] william morales dice:
por ejemplo yo hago lo sigguiente
oQry := oCon:Query( "SELEC * FROM CLIENTES" )
cClave := oQry:fieldget( "clave" )
cNombre := oQry:fieldget( "nombre" )
como lo haces tu en ADFO?
Armando dice:
Ahhh
Es parecido
oRsFol: Source := "SELECT " +;
"* " +;
"FROM " +;
"folfac"

Luego
oRsFol: Open()

Con esto ya tengo creado el Record set
!! [INCOS] william morales dice:
oQry := oCon:Query( "SELEC * FROM CLIENTES" )
aqui ya tengo creado el recordset
Armando dice:
Y luego para referirme a un campo en particular lo hago así
oRsHdr:Fields("CLI_NOM"):Value)
Y como defines una columna en un TXbrowse ?
!! [INCOS] william morales dice:
acá
cClave := oQry:fieldget( "clave" =
como ADO
asignas el nombre del campo
Armando dice:
Pues es muy parecido
Desde luego cambia pero no es cosa del otro mundo
!! [INCOS] william morales dice:
claro, claro
Armando dice:
Otras dudas, puedo ?
!! [INCOS] william morales dice:
claro
Armando dice:
Descargue la LIB de las contribuciones
Revisando un poco veo que esta muy abandonada
Creo que la ultima revisión es del 2006
No hay problema con eso ?
Sera que la abandonaron o tal vez ya esta en su punto ?
!! [INCOS] william morales dice:
nones
ha sido modificada por Walter
hay una version por ahi
Armando dice:
Okas
Bueno, mira
Yo te voy a seguir
Te repito siempre es bueno tener otra alternativa, no me cierro
!! [INCOS] william morales dice:
perfecto
autrizas colocar esta conversación en el blog?
Armando dice:
No te hago más preguntas para no adelantarnos al blog
por supuesto
!! [INCOS] william morales dice:
okas, okas
la proxima semana, haremos un miniproyecto
espero me de tiempo
porque esta semana, andaré un poco ocupado
Armando dice:
Ok, no hay urgencia, al menos por mi, jeje
!! [INCOS] william morales dice:
okas, okas
veré la audicnecia amigo
aunque dejame decirte que tengo casi 250 visits desde el inicio del blog
y dos seguidores logueados
Armando dice:
Mira, ya por ahi alguien lo dijo
La mayoria solo lee
Pocos son los que tienen iniciativa para interactuar
!! [INCOS] william morales dice:
asi es, lo tengo claro
solo que espero se anime mas gente
Armando dice:
Así que no te desanimes si no ves mucha respuesta
!! [INCOS] william morales dice:
faltaba info y me decidi a aportar una poca
Armando dice:
Cuando menos yo te voy a seguir
Y estaré molestando con pregun-tontas, jejeje
!! [INCOS] william morales dice:
eso me reconforta y anima amigo
aun asi fuese uno, espero seguir hasta donde la fuerza me acompañe
jjejjejjejjejje
Armando dice:
ok, éxito
!! [INCOS] william morales dice:
saludfos amigo, por aqui sigo aun
Armando dice:
=mente, bytes


Conversación autorizada por Armando.

Saludos
William Morales

Creación LIB TMySQL

Bueno, seguimos con el proceso.

Requerimientos:
Descargar MYSQL SERVER
Descargar constribución TMYSQL

Bueno, también el xHarbour y el Borland.

Ya descargadas las herramientas, pues pasamos al mero, mero, meoyo del asunto.

Ya instalado el server mysql, localizar la carpeta de los include's, donde se encuentran los headers necesarios para compilar la tmysql.

Supongamos que tenemos instalado las herramientas en:

Servidor mysql:
y:\mysql
xHarbour:
y:\xharbour
Borland C
y:\bcc55

ya localizada la carpeta, procederemos a modificar el bat de compilación. Antes listo el contenido de la carpeta mysql de las contribuciones.

Descargar imagen

El contenido del archivo BAT es el siguiente:

@echo off
rem
rem $Id: make_b32.bat,v 1.2 2006/09/30 17:47:20 areainformatica Exp $
rem

if "%1" == "clean" goto CLEAN
if "%1" == "CLEAN" goto CLEAN

:BUILD

make -fmakefile.bc %1 %2 %3 > make_b32.log
if errorlevel 1 goto BUILD_ERR

:BUILD_OK

copy ..\..\lib\b32\mysql.lib ..\..\lib\*.* > nul
goto EXIT

:BUILD_ERR

notepad make_b32.log
goto EXIT

:CLEAN

if exist ..\..\lib\b32\mysql.lib del ..\..\lib\b32\mysql.lib
if exist ..\..\lib\b32\mysql.bak del ..\..\lib\b32\mysql.bak
if exist ..\..\obj\b32\mysql.obj del ..\..\obj\b32\mysql.obj
if exist ..\..\obj\b32\tsqlbrw.c del ..\..\obj\b32\tsqlbrw.c
if exist ..\..\obj\b32\tmysql.c del ..\..\obj\b32\tmysql.c
if exist ..\..\obj\b32\tsqlbrw.obj del ..\..\obj\b32\tsqlbrw.obj
if exist ..\..\obj\b32\tmysql.obj del ..\..\obj\b32\tmysql.obj
if exist ..\..\obj\b32\mysqlrdd.obj del ..\..\obj\b32\mysqlrdd.obj
if exist ..\..\obj\b32\mysqlrdd.c del ..\..\obj\b32\mysqlrdd.c
goto EXIT

:EXIT


Y debe de quedar:

@echo off
rem
rem $Id: make_b32.bat,v 1.2 2006/09/30 17:47:20 areainformatica Exp $
rem

if "%1" == "clean" goto CLEAN
if "%1" == "CLEAN" goto CLEAN

:BUILD

y:\bcc55\bin\make -fmakefile.bc %1 %2 %3 > make_b32.log
if errorlevel 1 goto BUILD_ERR

:BUILD_OK

copy y:\xharbour\lib\mysql.lib y:\xharbour\lib > nul
goto EXIT

:BUILD_ERR

notepad make_b32.log
goto EXIT

:EXIT


El contenido del archivo makefile.bc

#
# $Id: makefile.bc,v 1.2 2006/09/30 17:47:20 areainformatica Exp $
#

# makefile for Borland C/C++ 32 bits
# Building of mysql.lib - Harbour API to mySQL

INCLUDE_DIR = ..\..\include

BIN_DIR = ..\..\bin\b32
OBJ_DIR = ..\..\obj\b32
LIB_DIR = ..\..\lib\b32

$(LIB_DIR)\mysql.lib : \
$(OBJ_DIR)\mysqlrdd.obj \
$(OBJ_DIR)\tmysql.obj \
$(OBJ_DIR)\tsqlbrw.obj \
$(OBJ_DIR)\mysql.obj

$(OBJ_DIR)\mysqlrdd.c : mysqlrdd.prg
$(OBJ_DIR)\mysqlrdd.obj : $(OBJ_DIR)\mysqlrdd.c
$(OBJ_DIR)\tmysql.c : tmysql.prg
$(OBJ_DIR)\tmysql.obj : $(OBJ_DIR)\tmysql.c
$(OBJ_DIR)\tsqlbrw.c : tsqlbrw.prg
$(OBJ_DIR)\tsqlbrw.obj : $(OBJ_DIR)\tsqlbrw.c
$(OBJ_DIR)\mysql.obj : mysql.c

.c.obj:
bcc32 $(CLIBFLAGS) -c -O2 -I$(INCLUDE_DIR) -DHB_OS_WIN_32_USED -o$@ $<
tlib $(LIB_DIR)\mysql.lib -+$@,,

.prg.c:
$(BIN_DIR)\harbour.exe $< -q0 -w -es2 -gc0 -n -i$(INCLUDE_DIR) -o$@

Y debe de quedar de la siguiente manera:

#
# $Id: makefile.bc,v 1.2 2006/09/30 17:47:20 areainformatica Exp $
#

# makefile for Borland C/C++ 32 bits
# Building of mysql.lib - Harbour API to mySQL

INCLUDE_DIR = y:\xharbour\include;y:\mysql\include

BIN_DIR = y:\xharbour\bin
OBJ_DIR = .\obj
LIB_DIR = y:\xharbour\lib


$(LIB_DIR)\mysql.lib : \
$(OBJ_DIR)\mysqlrdd.obj \
$(OBJ_DIR)\tmysql.obj \
$(OBJ_DIR)\tsqlbrw.obj \
$(OBJ_DIR)\mysql.obj

$(OBJ_DIR)\mysqlrdd.c : mysqlrdd.prg
$(OBJ_DIR)\mysqlrdd.obj : $(OBJ_DIR)\mysqlrdd.c
$(OBJ_DIR)\tmysql.c : tmysql.prg
$(OBJ_DIR)\tmysql.obj : $(OBJ_DIR)\tmysql.c
$(OBJ_DIR)\tsqlbrw.c : tsqlbrw.prg
$(OBJ_DIR)\tsqlbrw.obj : $(OBJ_DIR)\tsqlbrw.c
$(OBJ_DIR)\mysql.obj : mysql.c

.c.obj:
y:\bcc55\bin\bcc32 $(CLIBFLAGS) -c -O2 -I$(INCLUDE_DIR) -DHB_OS_WIN_32_USED -o$@ $<
y:\bcc55\bin\tlib $(LIB_DIR)\mysql.lib -+$@,,

.prg.c:
$(BIN_DIR)\harbour.exe $< -q0 -w -es2 -gc0 -n -i$(INCLUDE_DIR) -o$@


Después de esas modificaciones, debemos de darle dos click al BAT y listo, debe de crear la lib mysql.lib en la carpeta LIB donde instalamos xHarbour.

Hasta ahí podremos decir que tenemos creada la librería.

Proseguimos....

Para utilizar la LIB primero que nada debemos de hacer una importación de la lib libmysql.dll lo cual se hace con lo siguiente:

y:\bcc55\bin\implib libmysql.lib y:\mysql\bin\libmysql.dll

la libmysql.dll hay que localizar y ver que la ruta que he colocado sea la correcta según la instalación que hayan hecho.

la librería resultante, tendrá que adicionarse como librerías de tercero al proyecto que estén haciendo.

Eso quiere decir que son dos LIB que estaríamos adicionando a nuestro proyecto.
1.- mysql.lib
2.- libmysql.lib

y el archivo libmysql.dll, lo debemos de copiar a la carpeta donde tengamos nuestro exe ya generado, esto sería para que no tengamos un error en la ejecución, pues mandaría el error de DLL no existe.

Espero que con esta explicación puedan crear la LIB y hacer sus respectivas pruebas.

Como siempre, espero sus comentarios y/o dudas

Saludos
William Morales

sábado, 21 de febrero de 2009

Los pongo al tanto...

Amigos,

Les informo que estaré revisando sus comentarios diariamente en el transcurso de la noche (entre las 20 y 22 horas, méxico)y contestando, y los lunes estaré escribiendo más sobre el tema tmysql.

Cualquier duda con gusto estaré revisando y contestando.

Saludos
William Morales

jueves, 19 de febrero de 2009

Primeros ejemplos

Bueno, AAAArrrrancamos de lleno.

Podemos usar cualquier GUI compilada con xHarbour o xHarbour puro y duro:

HWGUI
OOHG
MINIGUI
FWH
Xailer


Ejemplo de conexión:

FUNCTION main()
WITH OBJECT TMySQLServer()
:new( "localhost", "usuario", "password", 3306 )
IF :lError
? "Error de conexión, verifique..."
ELSE
? "Conectado..."
ENDIF

:end()
ENDWITH

RETURN NIL


Ejemplo de conexión, creación y uso de una base de datos:

FUNCTION main()
WITH OBJECT TMySQLServer()
:new( "localhost", "usuario", "password", 3306 )
IF :lError
? "Error de conexión, verifique..."
ELSE
? "Conectado..."
IF !:DBExist( "tutores" )
:DBCreate( "tutores" )
ENDIF
IF :lError
? "La base de datos no se creó, verifique..."
ELSE
:SelectDB( "tutores" )
ENDIF
ENDIF

:end()
ENDWITH

RETURN NIL


Bueno, hasta ahí, creo que no debe de haber problemas.

Para las GUI que usen, coloquen lo respectivo para que funcione.

Saludos
William Morales

Versiones de TMySQL

Bueno,

Por sugerencia de un amigo-colega, he decidido colocar la LIB de la tmysql que uso. Así que les pido coloquen que versiones de xHarbour usan para intentar colocar una versión de TMySQL correspondiente.

Espero su colaboración.

Está es la primera aportación.

LIB TMYSQL xHarbour build 1.2.0 Intl. (SimpLex) (Rev. 6374)

Saludos
William Morales

miércoles, 18 de febrero de 2009

TMySQL mito o realidad

Bueno, un poco alocado el título, jjejjejje

Pero realmente creo que encaja muy bien.

Bueno, el primer tema será conocer que hace y de donde descargarla.

La Librería TMySQLServer es una contribución de xHarbour (dicen que está portada a Harbour, realmente no he tenido el gusto)la cual se usa para conectarse a mysql de forma nativa, es decir, sin ninguna ayuda, sino que su conexión es transparente. Bueno, en pocas palabras no necesita un cliente para poder conectarse.

Por otro lado, la pueden descargar desde Contribuciones xHarbour

Esperemos que se interesen y podamos ayudar a los que inician en este fascinante mundo SQL.

Saludos
William Morales

martes, 17 de febrero de 2009

Bienvenidos amigos...

Bueno,

Les doy la cordial bienvenida a este blog el cual estaré dando movimiento.

Espero poder contar con su asistencia y sobre todo su colaboración para ir aportando ideas.

Sinceramente

William Morales