Amigos,
He dejado de escribir por unos meses, ha sido un año muy difícil. Tanto en lo profesional como en lo personal.
Desde luego, hemos logrado superar algunos problemas y otros espero se estén solucionando.
Espero subir mas novedades con lo que he venido aportando y escribir más seguido.
Les deseo a todos una Feliz Navidad en compañía de todos su seres queridos y que la paz, armonía y unión reinen en esta navidad y en todos los días de su vida.
Saludos
Sinceramente
wmormar
Para compartir experiencias de TMySql, el compilador xHarbour así como la GUI FWH
domingo, 26 de diciembre de 2010
lunes, 5 de julio de 2010
tmysql 20100705
Correcciones menores
Corrección método seek()
Eliminación de tmysqlrow()
Aqui el link de descarga
Saludos
Corrección método seek()
Eliminación de tmysqlrow()
Aqui el link de descarga
Saludos
viernes, 2 de julio de 2010
Tmysql build 20100702
Nuevo build de la tmysql.
Novedades:
-- Corregido el uso de seek quedando:
oQry := omysql:query( "select * from clientes" )
? oQry:fieldget(1), oQry:fieldget( "codigo" ), oQry:codigo
oQry:codigo := 102030
? oQry:fieldget(1), oQry:fieldget( "codigo" ), oQry:codigo
hRow := oQry:seek( "codigo=102030",, {"*"} )
? hRow:codigo, hrow:descripcion
hRow := oQry:seek( "codigo=102030",, {"codigo"} )
? hRow:codigo
? oQry:seek( "102030", "codigo" ) // aquí regresa .t. o .f.
-- Se optimizan métodos de tmysqlquery() y tmysqltable
sin tanto preambulo como siempre AQUI LA DESCARGA
saludos
Novedades:
-- Corregido el uso de seek quedando:
oQry := omysql:query( "select * from clientes" )
? oQry:fieldget(1), oQry:fieldget( "codigo" ), oQry:codigo
oQry:codigo := 102030
? oQry:fieldget(1), oQry:fieldget( "codigo" ), oQry:codigo
hRow := oQry:seek( "codigo=102030",, {"*"} )
? hRow:codigo, hrow:descripcion
hRow := oQry:seek( "codigo=102030",, {"codigo"} )
? hRow:codigo
? oQry:seek( "102030", "codigo" ) // aquí regresa .t. o .f.
-- Se optimizan métodos de tmysqlquery() y tmysqltable
sin tanto preambulo como siempre AQUI LA DESCARGA
saludos
lunes, 28 de junio de 2010
TMYSQL Modificacion build 2010-06-28
Se ha modificado a petición de Ariel (argentina) el comportamiento del método Seek(), quedando de la siguiente manera.
oQry := oServer:Query( "SELECT * FROM clientes" )
Pensando que podemos hacer las busquedas así:
lFound := oQry:seek( "cliente = '20' )
lFound := oQry:seek( "20", "cliente" )
aReturn := oQry:seek( "cliente='20'",, {"nombre", "cliente", "direccion" }
AQUI LA DESCARGA
saludos
pd. servido Ariel
oQry := oServer:Query( "SELECT * FROM clientes" )
Pensando que podemos hacer las busquedas así:
lFound := oQry:seek( "cliente = '20' )
lFound := oQry:seek( "20", "cliente" )
aReturn := oQry:seek( "cliente='20'",, {"nombre", "cliente", "direccion" }
AQUI LA DESCARGA
saludos
pd. servido Ariel
sábado, 26 de junio de 2010
TMYSQL Modificacion build 2010-06-27
Amigos,
Aquí una actualización de la tmysql a la fecha del título, las modificaciones son:
Para ver la fechal del build de la lib
? oServer:cBuild
+ Modificación del método save()
No grababa, tenia un pequeño problema, detectado por Luis
+ Se adiciona la funcion setxbrowseold( oBrw, oQry, aFields )
Para versiones de FWH antigüas
oQry := oServer:Query( "SELECT * FROM clientes" )
El formato de aFields
aFields := { ;
"NAT", ;
{ "codigo", "Mi clave" }, ;
{ "nombre", "Nombre de mi clave" } ;
}
Bueno, espero sea de utilidad.
Como siempre AQUI LA DESCARGA
Quedo pendiente de los comentarios.
saludos
Aquí una actualización de la tmysql a la fecha del título, las modificaciones son:
Para ver la fechal del build de la lib
? oServer:cBuild
+ Modificación del método save()
No grababa, tenia un pequeño problema, detectado por Luis
+ Se adiciona la funcion setxbrowseold( oBrw, oQry, aFields )
Para versiones de FWH antigüas
oQry := oServer:Query( "SELECT * FROM clientes" )
El formato de aFields
aFields := { ;
"NAT", ;
{ "codigo", "Mi clave" }, ;
{ "nombre", "Nombre de mi clave" } ;
}
Bueno, espero sea de utilidad.
Como siempre AQUI LA DESCARGA
Quedo pendiente de los comentarios.
saludos
jueves, 17 de junio de 2010
Novedades en :Seek()
Hola a todos,
Dejamos a su disposicion una nueva y rapida forma de verificar un dato dentro de una tabla cualquiera independiente del query en curso.
oServer:Seek( cTable, cQuery ) -> lFound
Ej.
lReto:= oServer:Seek( "clientes", "codigo = 123456" )
Aqui la lib : http://www.box.net/shared/lut1rt9tyc
Espero les sirva.
Saludos.
Dejamos a su disposicion una nueva y rapida forma de verificar un dato dentro de una tabla cualquiera independiente del query en curso.
oServer:Seek( cTable, cQuery ) -> lFound
Ej.
lReto:= oServer:Seek( "clientes", "codigo = 123456" )
Aqui la lib : http://www.box.net/shared/lut1rt9tyc
Espero les sirva.
Saludos.
domingo, 30 de mayo de 2010
Instalación de MySQL
Ante todo doy las gracias a William Morales por permitir contarles mis inicios con MySQL.
En este primer post voy a contar mi experiencia al instalar el servidor en mi notebook con Windows Vista Home Basic.
1°) Baje de la página de MySQL el instalador http://dev.mysql.com/downloads/mysql/
en mi caso, he bajado el archivo zip para Windows (x86,32 bit) y lo descomprimí para luego ejecutar el fichero setup.exe
2°) De las tres opciones para realizar la instalación, elegí la primera de ellas que es la de instalación típica, y luego fui seleccinando las opciones por defecto, hasta llegar a nombre de usuario (root) y password
3°) Para verificar que el servidor esta funcionando, fui a la MySQL command Line Cliente y ahi ingreso el pass
Si todo esta bien veras el prompt de MySQL>
En este primer post voy a contar mi experiencia al instalar el servidor en mi notebook con Windows Vista Home Basic.
1°) Baje de la página de MySQL el instalador http://dev.mysql.com/downloads/mysql/
en mi caso, he bajado el archivo zip para Windows (x86,32 bit) y lo descomprimí para luego ejecutar el fichero setup.exe
2°) De las tres opciones para realizar la instalación, elegí la primera de ellas que es la de instalación típica, y luego fui seleccinando las opciones por defecto, hasta llegar a nombre de usuario (root) y password
3°) Para verificar que el servidor esta funcionando, fui a la MySQL command Line Cliente y ahi ingreso el pass
Si todo esta bien veras el prompt de MySQL>
Espero que les sea útil para quienes se quieren iniciar con MySQL, iré subiendo al blog todo lo valla aprendiendo para compartirlo con quienes esten interesados.
Saludos cordiales
Marcelo Roggeri
lunes, 12 de abril de 2010
FWH Generator 1.5
Amigos,
Pos aquí dejando la actualización 1.5 de FWH Generator.
AQUI LA DESCARGA FWHGen1.5.EXE
Sin tanto preámbulo aquí las modificaciones.
+ Se agrega botón para grabado de parámetros
! Se corrige parte del código al recargar la lista de fuentes
+ Se adicionan dos botones para seleccionar
Todo o Ninguno de la lista
Bueno, esperando sea de ayuda por aquí ando por cualquier duda
Saludos
William Morales
PD. Mario no he incluido aún las imágenes que me enviaste, será para la próxima, Gracias
Pos aquí dejando la actualización 1.5 de FWH Generator.
AQUI LA DESCARGA FWHGen1.5.EXE
Sin tanto preámbulo aquí las modificaciones.
+ Se agrega botón para grabado de parámetros
! Se corrige parte del código al recargar la lista de fuentes
+ Se adicionan dos botones para seleccionar
Todo o Ninguno de la lista
Bueno, esperando sea de ayuda por aquí ando por cualquier duda
Saludos
William Morales
PD. Mario no he incluido aún las imágenes que me enviaste, será para la próxima, Gracias
sábado, 27 de febrero de 2010
Y dicen que no se renace...
Bueno amigos,
Como muchos ya habrán leído se ha creado un nuevo motor de base de datos llamado MariaDB (llamado en honor a la hija del "Monty", creador y fundado de MySQL).
Este motor se ha generado por la compra de MySQL por Sun y posteriormente por Oracle.
Estos son los lugares oficiales donde podrán leer información al respecto.
Según las pruebas, instales MySQL o MariaDB su uso es transparente con la TMySQL.
Esperemos haya más información.
MONTY - MARIADB
Saludos
Como muchos ya habrán leído se ha creado un nuevo motor de base de datos llamado MariaDB (llamado en honor a la hija del "Monty", creador y fundado de MySQL).
Este motor se ha generado por la compra de MySQL por Sun y posteriormente por Oracle.
Estos son los lugares oficiales donde podrán leer información al respecto.
Según las pruebas, instales MySQL o MariaDB su uso es transparente con la TMySQL.
Esperemos haya más información.
MONTY - MARIADB
Saludos
sábado, 6 de febrero de 2010
TmySql Actualización 6.feb.2010
Bueno,
En esta ocasión he actualizado los modulos de respaldo y restauración de información de contenedores y sus respectivas tablas.
AQUI LA DESCARGA
La sintaxis de backup() quedó de la siguiente manera:
oCon:backup( aSelect, cFile, lDrop, .f., oDlgsql )
Y del restore() asi quedó:
oCon:restore( aSelect, cFile, oDlgsql )
La explicación de cada parámetro es explicado en la entrada anterior.
Cualquier duda andamos por el Messenger o por aquí.
Saludos
En esta ocasión he actualizado los modulos de respaldo y restauración de información de contenedores y sus respectivas tablas.
AQUI LA DESCARGA
La sintaxis de backup() quedó de la siguiente manera:
oCon:backup( aSelect, cFile, lDrop, .f., oDlgsql )
Y del restore() asi quedó:
oCon:restore( aSelect, cFile, oDlgsql )
La explicación de cada parámetro es explicado en la entrada anterior.
Cualquier duda andamos por el Messenger o por aquí.
Saludos
domingo, 24 de enero de 2010
Impresión directa
Amigos,
He realizado una clase para imprimir directamente a impresoras matriciales (no he checado con otro tipo de impresoras), esto es, sin importar si son Paralelas, Seriales, USB, WIFI u otras, siempre y cuando estén instaladas en windows.
AQUI LA DESCARGA
Sin más preambulo, aquí un ejemplo de uso:
#include
FUNCTION main()
LOCAL oTck
LOCAL nRow := 1
oTck := TDirectPrint():new()
? oTck:cIncos, oTck:cCredits
oTck:nCopy := 1
oTck:say( nRow++, 10, "William morales" )
oTck:say( nRow++, 12, "Gladys sanchez" )
oTck:say( nRow++, 00, "" )
oTck:jump( 10 )
oTck:sendtoprinter()
? "Termino de imprimir"
RETURN NIL
En el archivo de descarga viene la LIB, EXE y el PRG de ejemplo.
Y aquí un desgloce de lo que hasta ahora contiene.
DATAS
cIncos.- Nombre y versión de la clase
cBuild.- Fecha de creación de la LIB
cCredits.- Créditos de autoría y tester
nRow.- Línea de impresión
nCol.- Columna de impresión
cPrinter.- Nombre de la impresora a enviar
cDocument.- Nombre del documento que aparece en el Spooler de windows
nCopy.- Número de copias del documento a imprimir
new( cPrinter ).- Inicialización de la clase y (opcional) pasar nombre de la impresora, si no se pasa, se tomará la que este predeterminada en el momento.
printerdefault().- Asigna la impresora default a cPrinter
setlpt( nLpt ).- Asigna a cPrinter la impresora que esté asignada al puerto indicado
jump( nJump ).- Salta n lineas
say( nRow, nCol, cText ).- Imprime en la línea, columna especificada el texto enviado
opencash( cPrinter, nCash ).- Abre un cajón de dinero, pasandole que impresora se usa. "epson", "star" y el número de cajón a abrir.
sendtoprinter().- Envía a la impresora
checkport( nPort ).- Checa si en el puerto LPT especificado hay impresora asignada
eject().- Aplica un salto de página
Distintos envíos de secuencias de ESC a la impresora.
beginprint().- Inicializa la impresora, por si se imprimió antes un grafico
endprint().- Finaliza la impresión
bold( lOnOff ).- Habilita o deshabilita negritas
condensed().- Habilita condensada
normal().- Habilita o coloca impresión a texto normal
expansive( lOnOff ).- Habilita o deshabilita letras grandes
superscript( lOnOff ).- Habilita o deshabilita superscript
subscript( lOnOff ).- Habilita o deshabilita subscript
underline( lOnOff ).- Habilita o deshabilita underline
Bueno, es solo el principio, se aceptan sugerencias, críticas, etc.
Desde luego, espero comentarios o adiciones para poder haciendola estable y mas potente.
Por mi no se detengan a comentar o usar, si necesitan algo específico hagamos los comentarios y evaluamos.
Saludos y realmente espero podamos ahora si, poder comentar o sugerir.
Sinceramente.
William Morales
He realizado una clase para imprimir directamente a impresoras matriciales (no he checado con otro tipo de impresoras), esto es, sin importar si son Paralelas, Seriales, USB, WIFI u otras, siempre y cuando estén instaladas en windows.
AQUI LA DESCARGA
Sin más preambulo, aquí un ejemplo de uso:
#include
FUNCTION main()
LOCAL oTck
LOCAL nRow := 1
oTck := TDirectPrint():new()
? oTck:cIncos, oTck:cCredits
oTck:nCopy := 1
oTck:say( nRow++, 10, "William morales" )
oTck:say( nRow++, 12, "Gladys sanchez" )
oTck:say( nRow++, 00, "" )
oTck:jump( 10 )
oTck:sendtoprinter()
? "Termino de imprimir"
RETURN NIL
En el archivo de descarga viene la LIB, EXE y el PRG de ejemplo.
Y aquí un desgloce de lo que hasta ahora contiene.
DATAS
cIncos.- Nombre y versión de la clase
cBuild.- Fecha de creación de la LIB
cCredits.- Créditos de autoría y tester
nRow.- Línea de impresión
nCol.- Columna de impresión
cPrinter.- Nombre de la impresora a enviar
cDocument.- Nombre del documento que aparece en el Spooler de windows
nCopy.- Número de copias del documento a imprimir
new( cPrinter ).- Inicialización de la clase y (opcional) pasar nombre de la impresora, si no se pasa, se tomará la que este predeterminada en el momento.
printerdefault().- Asigna la impresora default a cPrinter
setlpt( nLpt ).- Asigna a cPrinter la impresora que esté asignada al puerto indicado
jump( nJump ).- Salta n lineas
say( nRow, nCol, cText ).- Imprime en la línea, columna especificada el texto enviado
opencash( cPrinter, nCash ).- Abre un cajón de dinero, pasandole que impresora se usa. "epson", "star" y el número de cajón a abrir.
sendtoprinter().- Envía a la impresora
checkport( nPort ).- Checa si en el puerto LPT especificado hay impresora asignada
eject().- Aplica un salto de página
Distintos envíos de secuencias de ESC a la impresora.
beginprint().- Inicializa la impresora, por si se imprimió antes un grafico
endprint().- Finaliza la impresión
bold( lOnOff ).- Habilita o deshabilita negritas
condensed().- Habilita condensada
normal().- Habilita o coloca impresión a texto normal
expansive( lOnOff ).- Habilita o deshabilita letras grandes
superscript( lOnOff ).- Habilita o deshabilita superscript
subscript( lOnOff ).- Habilita o deshabilita subscript
underline( lOnOff ).- Habilita o deshabilita underline
Bueno, es solo el principio, se aceptan sugerencias, críticas, etc.
Desde luego, espero comentarios o adiciones para poder haciendola estable y mas potente.
Por mi no se detengan a comentar o usar, si necesitan algo específico hagamos los comentarios y evaluamos.
Saludos y realmente espero podamos ahora si, poder comentar o sugerir.
Sinceramente.
William Morales
miércoles, 20 de enero de 2010
TMYSQL (backup-restore)
Amigos,
He adicionado el modulo de respaldos y restauración a la clase TMySQL, sin mas preámbulo aquí la manera de usarlo.
** BACKUP **
aSelect := { "barras", "productos", "usuarios" }
cFile := "incos.sql"
lDrop := .t.
lOver := .t.
MSGRun( "Generando respaldo, espere por favor...",, {|oDlgsql| nItem := oCon:backup( aSelect, cFile, lDrop, lOver, oDlgsql )} )
Aquí la descripción de los datos a pasar.
aSelect.- Arreglo unidimensional conteniendo la lista de tablas a respaldar.
cFile.- Nombre de archivo con extensión en donde se guardará el respaldo.
lDrop.- Valor lógico donde se define si se incluye la instrucción DROP TABLE y la creación de la tabla.
lOver.- Valor lógico donde indica si el archivo de respaldo se sobreescribe o no.
oDlgsql.- Objeto en este caso el del MSGRUN para visualizar el avance del respaldo.
Valores que retorna en este caso guardado en la variable nItem.
0.- Ejecutado correctamente.
1.- No hay contenedor seleccionado (base de datos)
2.- Si el archivo de respaldo existe
3.- No selecciono tablas para respaldar.
** RESTORE **
aSelect := { "barras" }
cFile := "incos.sql"
MSGRun( "Restaurando información, espere por favor...",, {|oDlgsql| nItem := oCon:restore( aSelect, cFile, oDlgsql )} )
Descripción de datos a pasar.
aSelect.- Arreglo unidimensional que contiene las tablas a restaurar. Cabe mencionar que se puede seleccionar que tablas restaurar.
cFile.- Nombre del archivo que contiene el respaldo.
oDlgsql.- Objeto en este caso el del MSGRUN para visualizar el avance del respaldo.
AQUI LA DESCARGA
Sería importante comentar su uso y si está funcionando todo bien. Acá hicimos pruebas, pero algo pudo pasarse.
Espero comentarios pues son inyecciones de ánimo.
Saludos
William Morales
He adicionado el modulo de respaldos y restauración a la clase TMySQL, sin mas preámbulo aquí la manera de usarlo.
** BACKUP **
aSelect := { "barras", "productos", "usuarios" }
cFile := "incos.sql"
lDrop := .t.
lOver := .t.
MSGRun( "Generando respaldo, espere por favor...",, {|oDlgsql| nItem := oCon:backup( aSelect, cFile, lDrop, lOver, oDlgsql )} )
Aquí la descripción de los datos a pasar.
aSelect.- Arreglo unidimensional conteniendo la lista de tablas a respaldar.
cFile.- Nombre de archivo con extensión en donde se guardará el respaldo.
lDrop.- Valor lógico donde se define si se incluye la instrucción DROP TABLE y la creación de la tabla.
lOver.- Valor lógico donde indica si el archivo de respaldo se sobreescribe o no.
oDlgsql.- Objeto en este caso el del MSGRUN para visualizar el avance del respaldo.
Valores que retorna en este caso guardado en la variable nItem.
0.- Ejecutado correctamente.
1.- No hay contenedor seleccionado (base de datos)
2.- Si el archivo de respaldo existe
3.- No selecciono tablas para respaldar.
** RESTORE **
aSelect := { "barras" }
cFile := "incos.sql"
MSGRun( "Restaurando información, espere por favor...",, {|oDlgsql| nItem := oCon:restore( aSelect, cFile, oDlgsql )} )
Descripción de datos a pasar.
aSelect.- Arreglo unidimensional que contiene las tablas a restaurar. Cabe mencionar que se puede seleccionar que tablas restaurar.
cFile.- Nombre del archivo que contiene el respaldo.
oDlgsql.- Objeto en este caso el del MSGRUN para visualizar el avance del respaldo.
AQUI LA DESCARGA
Sería importante comentar su uso y si está funcionando todo bien. Acá hicimos pruebas, pero algo pudo pasarse.
Espero comentarios pues son inyecciones de ánimo.
Saludos
William Morales
viernes, 1 de enero de 2010
Feliz año 2010
Amigos,
Mis mas sinceros deseos para este año que inicia y que todos nuestros proyectos sean exitosos.
Que la dicha, prosperidad, amor y sobre todo salud se derramen en cada uno de nosotros y nuestras familias.
saludos
sinceramente
Mis mas sinceros deseos para este año que inicia y que todos nuestros proyectos sean exitosos.
Que la dicha, prosperidad, amor y sobre todo salud se derramen en cada uno de nosotros y nuestras familias.
saludos
sinceramente
Suscribirse a:
Entradas (Atom)