Class to manager MYSQL for Harbour/xHarbour
Custom Search

viernes, 24 de diciembre de 2010

Feliz Navidad / Merry Christmas

Quiero agradecer a todos los seguidores inscritos (y los que no) la confianza brindada, espero que el proximo año les depare los mejores momentos

I want to thank all followers attached (and those who have not)  i hope the next year will send you the best moment

lunes, 13 de diciembre de 2010

Actuazalicion / Update

Agregado metodo GetServerInfo.
Retorna Una cadena de caracteres que representa el número de versión del servidor 
Agregado metodo GetClientInfo
Una cadena de caracteres que representa la versión de la biblioteca de cliente MySQL

Added  Method GetServerInfo() 
Returns a string that represents the server version number
Added Method GetClientInfo
Return a string that represents the MySQL client library version


sábado, 11 de diciembre de 2010

Dentro de GUI / Inside GUI

TDolphin ha ido subiendo escalones poco a poco, se ha aceptado en 2 GUIs diferentes, Fivewin y T-GTK
TDolphin steps has been rising gradually, has been accepted into 2 different GUIs, Fivewin and T-GTK 


Fivewinhttp://forums.fivetechsupport.com/viewtopic.php?f=16&t=19450&p=102455&hilit=tdolphin#p102455
* New: Support for TDolphin classes to manager Mysql, review samples/testdol.prg


T-GTK
Para quienes desarrollan bajo Windows, ya disponible nuevo instalador estilo suite que contiene: MinGW, Harbour 2.1, GTK+, Glade, gEdit, t-gtk y TDolphin!!!

Gracias por el apoyo / Thanks for support

lunes, 15 de noviembre de 2010

Construir LIB-Ejemplos / Build LIB - Samples

Saludos

He debido haber escrito este post desde hace un tiempo atras, existe una nueva forma de construir la LIB y los ejemplos
I should write this post long time ago, exist  new way to build LIB and samples

LIB
hay que configurar configurar las variables del entorno de trabajo
config the enviroment...


  • PRG_COMPILER=HARBOUR
  • PRG_COMP_PATH=\harbour
  • PRG_COMP_BIN_PATH=%PRG_COMP_PATH%\bin
  • PRG_COMP_LIB_PATH=%PRG_COMP_PATH%\lib\win\bcc
  • PRG_COMP_INC_PATH=%PRG_COMP_PATH%\include
  • C_COMPILER=BCC
  • C_COMP_PATH=c:\bcc582
  • C_COMP_BIN_PATH=%C_COMP_PATH%\bin
  • C_COMP_LIB_PATH=%C_COMP_PATH%\lib;%C_COMP_PATH%\lib\psdk
  • C_COMP_INC_PATH=%C_COMP_PATH%\include
  • DOLPHIN_INC=.\include


PRG_COMPILER
nombre del compilador PRG
PRG compiler name
Valores / Values

  • HARBOUR
  • XHARBOUR
PRG_COMP_PATH
Ruta principal de acceso al compilador PRG 
Root path PRG compiler

PRG_COMP_BIN_PATH
Ruta de harbour.exe
Path of harbour.exe

PRG_COMP_LIB_PATH
Ruta de las librerias del compilador PRG
Path of PRG compiler Libraries 

PRG_COMP_INC_PATH
Ruta de los archivos de cabecera del compilador PRG
Path of PRG compiler header files

C_COMPILER
nombre del compilador de C
C compiler name
Valores / Values
  • BCC for borland
  • MINGW32 for mingw
  • MSVC32 for Microsoft 32 bit
  • MSVC64 for Microsoft 64 bit

C_COMP_PATH
Ruta principal de acceso al compilador C 
Root path C compiler

C_COMP_BIN_PATH
Ruta de compiler_executable
Path of compiler_executable

C_COMP_LIB_PATH
Ruta de las librerias del compilador C
Path of C compiler Libraries 

C_COMP_INC_PATH
Ruta de los archivos de cabecera del compilador C
Path of C compiler header files


Existen varios script (.bat) para facilitar la configuracion del entorno
There are some batch file to make easy the enviroment config

  • setenvh.bat, Harbour/Borland
  • setenvhg.bat, Harbour/MiniGW
  • setenvhm.bat, Harbour/Microsoft 32
  • setenv64.bat, Harbour/Microsft 64
  • setenvx.bat, xHarbour/Borland
  • setenvxg.bat, xHarbour/MiniGW
  • setenvxm.bat, xHarbour/Microsoft 32

despues de configurar el entorno ejecutar win-make.exe
after config the enviroment run win-make.exe

remark:
los script ejecutan automaticamente win-make.exe
the bath file run automatically win-make.exe

SAMPLES
Dentro de la carpeta Samples existen 2 scrip principales para construir los ejemplos
Inside samples folder there are 2 batch file to build samples

bldcon.bat
Construye los ejemplos en modo consola
Build samples in console mode

Parametros / Parameters

bldcon prgfile [yes/[no]]
prgfile nombre del archivo prg sin la extencion PRG
[yes/[no]]  uso del modo embebido, por omision es no

prgfile  prg name without PRG ext
[yes/[no]]  activate embedded, default values is no


bldfw.bat

Construye los ejemplos en modo grafico usando Fivewin
Build samples in console mode with Fivewin

Parametros / Parameters 
bldfw prgfile [yes/[no]] 
prgfile nombre del archivo prg sin la extencion PRG
[yes/[no]]  uso del modo embebido, por omision es no
prgfile  prg name without PRG ext
[yes/[no]]  activate embedded, default values is no

jueves, 30 de septiembre de 2010

BLOB-TEXT

Un BLOB es un objeto binario que puede tratar una cantidad de datos variables. Los cuatro tipos BLOB sonTINYBLOB, BLOB, MEDIUMBLOB, y LONGBLOB. Difieren sólo en la longitud máxima de los valores que pueden tratar.

Los cuatro tipos TEXT son TINYTEXT, TEXT, MEDIUMTEXT, y LONGTEXT. Se corresponden a los cuatro tipos BLOB y tienen las mismas longitudes y requerimientos de almacenamiento, segun se muestra en la siguiente tabla

Tipo de columnaAlmacenamiento requerido
CHAR(M)M bytes, 0 <= M <= 255
VARCHAR(M)L+1 bytes, donde L <= M y 0 <= M <= 255
BINARY(M)M bytes, 0 <= M <= 255
VARBINARY(M)L+1 bytes, donde L <= M y 0 <= M <= 255
TINYBLOBTINYTEXTL+1 byte, donde L < 2^8
BLOBTEXTL+2 bytes, donde L < 2^16
MEDIUMBLOBMEDIUMTEXTL+3 bytes, donde L < 2^24
LONGBLOBLONGTEXTL+4 bytes, donde L < 2^32

Los tipos VARCHAR y BLOB y TEXT son de longitud variable. Para cada uno, los requerimientos de almacenamiento depende de la longitud de los valores de la (representados por L en la tabla precedente), en lugar que el tamaño máximo del tipo. Por ejemplo, una columna VARCHAR(10) puede tratar una cadena con una lengitud máxima de 10. El almacenamiento requerido real es la longitud de la cadena (L), más 1 byte para registrar la longitud de la cadena. Para la cadena 'abcd', L es 4 y el requerimiento de almacenamiento son 5 bytes.

Para los tipos CHAR, VARCHAR, y TEXT, los valores L y M en la tabla precedente debe interpretarse como números de caracteres en MySQL 5.0, y las longitudes para estos tipos en las especificaciones de la colmna indican el número de caracteres. Por ejemplo, para almacenar un valor TINYTEXT necesita L caracteres + 1 byte.

El motor NDBCLUSTER soporta sólo columnas de longitud fija. Esto significa que una columnaVARCHAR de una tabla en MySQL Cluster se comportará casi como si fuera de tipo CHAR (excepto que cada registro todavía tiene un byte extra). Por ejemplo, en una tabla Cluster, cada registro en una columna declarada como VARCHAR(100) necesitará 101 bytes para almacenamiento, sin tener en cuenta la longitud de la columna almacenada en cualquier registro.

Los tipos BLOB y TEXT requieren 1, 2, 3, o 4 bytes para almacenar la longitud de la columna, dependiendo de la longitud máxima posible del tipo.

Las columnas TEXT y BLOB se implementan de forma distinta en el motor de almacenamiento NDBCLUSTER , donde cada registro en una columna TEXT se compone de dos partes separadas. Una de estas es de longitud fija (256 bytes), y se almacena realmente en la tabla original. La otra consiste de cualquier dato de más de 256 bytes, que se almacena en una tabla oculta. Los registros en esta segunda tabla siempre tienen una longitud de 2,000 bytes . Esto significa que el tamaño de una columna TEXT es 256 si size <= 256 (donde size representa el tamaño del registro); de otro modo, el tamaño es 256 + size + (2000 - (size - 256) % 2000).

Las columnas BLOB se tratan como cadenas de caracteres binarias (de bytes). Las columnas TEXT se tratan como cadenas de caracteres no binarias (de carácateres). Las columnas BLOB no tienen conjunto de caracteres, y la ordenación y la comparación se basan en los valores numéricos de los bytes. Las columnas TEXT tienen un conjunto de caracteres y se ordenan y comparan en base de la colación del conjunto de caracteres asignada a la columna

No hay conversión de mayúsculas/minúsculas para columnas TEXT o BLOB durante el almacenamiento o la recuperación.

Si asiguna un valor a una columna BLOB o TEXT que exceda la longitud máxima del tipo de la columna, el valor se trunca. Si los caracteres truncados no son espacios, aparece una advertencia. Puede hacer que aparezca un error en lugar de una advertencia usando el modo SQL estricto.

En la mayoría de aspectos, puede tratar una columna BLOB como VARBINARY que puede ser tan grande como desee. Similarmente, puede tratar columnas TEXT como VARCHAR. BLOB y TEXT difieren de VARBINARY y VARCHARen los siguientes aspectos::

No se eliminan espacios al final para columnas BLOB y TEXT cuando los valores se almacenan o recuperan.

Tenga en cuenta que TEXT realiza comparación espacial extendida para coincidir con el objeto comparado, exactamente como CHAR y VARCHAR.

Para índices en columnas BLOB y TEXT, debe especificar una longitud de prefijo para el índice. Para CHAR yVARCHAR, la longitud de prefijo es opciona.

BLOB y TEXT no pueden tener valores DEFAULT .

jueves, 23 de septiembre de 2010

Obtener informacion de los indices de la tabla / Get index information from table

Para obtener la informacuion detallada de los indices de una tabla, puedes ejecutar el siguiente "query"
For detailed information indexes created on table, you can execute following  Query:

SHOW INDEX FROM table_name;
Descripcion de los campos ( Tomados del sitio oficial de MySql)
Description of fields (help taken from Mysql website):


se veria algo asi/Look some like that




Table
Nombre de la Tabla 
The name of the table.

Non_unique
0 si el índice no puede contener duplicados, 1 si puede. /
0 if the index cannot contain duplicates, 1 if it can.

Key_name
Nombre del Indice 
The name of the index.

Seq_in_index
Número de secuencia de columna en el índice, comenzando con 1. / 
The column sequence number in the index, starting with 1.

Column_name
Nombre de columna / 
The column name.

Collation
Cómo se ordena la columna en el índice. En MySQL, puede tener valores 'A' (Ascendente) o NULL (No ordenado). /
How the column is sorted in the index. In MySQL, this can have values “A” (Ascending) or NULL (Not sorted).

Cardinality
Número de valores únicos en el índice. Se actualiza ejecutando ANALYZE TABLE o myisamchk -a. Cardinalityse cuenta basándose en las estadísticas almacenadas como enteros, así que no es necesariamente precisa para tablas pequeñas. Mientras más grande sea, más grande es la probabilidad que MySQL use el índice al hacer joins.
An estimate of the number of unique values in the index. This is updated by running ANALYZE TABLE or myisamchk -a. Cardinality is counted based on statistics stored as integers, so the value is not necessarily exact even for small tables. The higher the cardinality, the greater the chance that MySQL uses the index when doing joins.
Sub_part
Número de caracteres indexados si la columna sólo está indexada parcialmente. NULL si la columna entera está indexada/
The number of indexed characters if the column is only partly indexed, NULL if the entire column is indexed.

Packed
Indica cómo está empaquetada la clave. NULL si no lo está.
Indicates how the key is packed. NULL if it is not.

Null
Contiene YES si la columna puede contener NULL. Si no, la columna contiene NO/
Contains YES if the column may contain NULL values and ” if not.

Index_type
Método de índice usado (BTREE, FULLTEXT, HASH, RTREE).
The index method used (BTREE, FULLTEXT, HASH, RTREE).

Comment.
Comentarios Varios
Various remarks.

Servidor incrustado / Embedded Server

Actualizado SVN para el uso de servidor incrustado
Updated SVN for embedded server

se agregaron a la carpeta sample los archivos necesarios
los nuevos script para ejecutar los ejemplos con el servidor incrustado son los terminados en "_e" ejemplo bldhm_e.bat, construye el ejemplo para el servidor inscrustado usando el compilador de microsoft
(por los momentos todos en modo consola)

added to samples folder the files necessaries to run embedded server
the new script to build embedded samples are all finished with "_e", ie. bldhm_e.bat, build the embedded server sample with microsoft compiler 
(for now all are in console mode)

download samples here

miércoles, 22 de septiembre de 2010

Harbour/xHarbour

Eliminada carpetas Harbour / xHarbour del SVN, ahora seran descargadas directamente del link suministrados en el blog
Deleted folders Harbour / xHarbour from SVN, now can download from blog

Actualizado/Updated Harbour 2.1 (Rev 15490)  (borland y msvc)
Actualizado/Updated xHarbour build 1.2.1 (simplex) (Rev 6733) (borland y msvc)

lunes, 20 de septiembre de 2010

Idioma / Language

> Willi: Hola Daniel,,, el metodo seek no ubica la letra Ñ
> Willi: Hello Daniel, the Method seek doesn't find "Ñ"

No ubica la Ñ ni otro caracter especial
Doesn't find Ñ or other especial char

Nueva funcion/New Function  Set_MyLang( cLocale )
cLocale contienen información sobre cómo interpretar y llevar a cabo ciertas entradas / salidas y las operaciones de transformación, teniendo en cuenta ubicación y el idioma ajustes específicos
cLocale contain information on how to interpret and perform certain input/output and transformation operations taking into consideration location and language specific settings

El  valor de cLocale dependeran por plataforma, para nuestro caso: Window
The value of cLocale will depend of plataform, for own case: Window

LanguageLANGUAGE option value
Chinese, Simplifiedchs
Chinese, Traditionalcht
Englishameng
Frenchfra
Germandeu
Italianita
Japanesejpn
Koreankor
Portuguese, Brazilianptb
Russianrus
Spanishesp

Con esta funcion se podran accesar los caracteres espciales Ñ, ñ, Á, á, É, é, ... el unico incoveniente es que son sencibles a mayusculas y minusculas
With this function we will can access the special char Ñ, ñ, Á, á, É, é, ..., the only problem is them are case sensitive 

Revisar/Check  testfw2.prg

FUNCTION Main() 

   LOCAL oWnd 
   LOCAL oMenu
   LOCAL oServer
   MENU oMenu 2007
      MENUITEM "testing" ACTION DataBrowse( oServer, oWnd )
   ENDMENU
   
   SET CENTURY ON
   SET DATE FORMAT "dd/mm/yyyy"   
      
   //Activated Case sensitive
   D_SetCaseSensitive( .T. )

   Set_MyLang( "esp" )
   
   IF ( oServer := ConnectTo() ) == NIL
      RETURN NIL
   ENDIF
   
   DEFINE WINDOW oWnd TITLE "Testing Dolphin - Fivewin" MENU oMenu
   
   ACTIVATE WINDOW oWnd 
   
   oServer:End()
   
RETURN NIL

Probar y exponer experiencias, Gracias
Test and post experiences, Thanks