Ayuda con Informix - Disculpen que insista

Postby ADBLANCO » Fri Sep 05, 2008 1:59 pm

Bueno, Pero ya me embarque en esta!, De todas formas, les lanzo un ejemplo de coneccion:

static function CheckConnection()
local cHost :="194.187.0.1"
local cUser :="superv1"
local cPassword :="adsistem"
cDtBase :="base_datos_hcm"
cDtComun :="BDComun"
// Creamos el objeto "connexion" y
// Nos conectamos al servidor
oMySQL:=TMSConnect():New()

oMySQL:Connect( cHost, cUser, cPassword)

if !oMySql:lConnected
MsgInfo( "No hay conexion con el servidor", "Operación Cancelada" )
return( .F. )
endif
// Creamos un objeto DataBase y
// Ponemos por defecto el objeto DataBase
*USE DATABASE oDtBase NAME cDbName OF oMySQL // equivale a :
oDtBase:= TMSDataBase():new( oMysql, cDtBase,.t.)
if !oDtBase:Used()
if oMySql:ExistDb( cDtBase )
MsgInfo( "No se puede conectar, Pero Existe:" + cDtBase, "Operación Cancelada" )
else
MsgInfo( "No se puede conectar a la BD: " + cDtBase, "Operación Cancelada" )
endif
return( .F. )
endif
oDtComun:= TMSDataBase():new( oMysql, cDTComun,.t.)
if !oDtComun:Used()
if oMySql:ExistDb( cDtComun )
MsgInfo( "No se puede conectar, Pero Existe:" + cDtComun, "Operación Cancelada" )
else
MsgInfo( "No se puede conectar a la BD: " + cDtComun, "Operación Cancelada" )
endif
return( .F. )
endif
return (.t.)
[/code]
Last edited by ADBLANCO on Fri Sep 05, 2008 2:33 pm, edited 1 time in total.
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
User avatar
ADBLANCO
 
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Postby ADBLANCO » Fri Sep 05, 2008 2:07 pm

Y aqui otro ejemplo

// bloque para efectuar el query

bSeek:={| cSeek | 'SELECT '+cDTBase+'.DtsRamo.IntIdDtsRamo,'+;
cDTBase+'.DtsRamo.VchDescripcion,'+;
cDTBase+'.DtsRamo.TinStatus'+;
' FROM '+cDTBase+'.DtsRamo '+;
' WHERE '+cDTBase+'.DtsRamo.TinStatus <> 0 AND '+;
cDTBase+'.DtsRamo.VchDescripcion LIKE '+"'%"+ALLTRIM(cSeek)+"%'"+;
' ORDER BY '+cDTBase+'.DtsRamo.VchDescripcion '}
oQuery :=TMSQuery():New( oDTbase ) // inicializa la clase
oQuery:Open( eval(bSeek,"") ) // efectua el query


IF ( oQuery:nRowCount=0 ) // si no hay registros
MSGALERT("No Existen Ramos, Incluya Alguno","Atención...")
CreaRamo(oWnd,0,0,0,,1,.T.)
oQuery:Open( eval(bSeek,"") )
ENDIF


Nota: esto es para efectuar un listbox con busqueda contínua por el campo VchDescripcion
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
User avatar
ADBLANCO
 
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Postby ADBLANCO » Fri Sep 05, 2008 2:11 pm

Y aqui el Listbox:

REDEFINE GET oSeek VAR cSeek ID 201 OF oDlg ;
MESSAGE "Coloque Filtro";
PICTURE "@!";
ON CHANGE (FiltroSql( @oLbx , cSeek , @oQuery,EVAL(bSeek,cSeek)),;
eval(bRowCount))

REDEFINE LISTBOX oLbx ;
FIELDS oQuery:FieldGet( 2 );
FIELDSIZES 190;
MESSAGE "Seleccione Ramo, ([Enter] o Doble Click => Modifica)";
HEADERS "Descripción" ID 401 OF oDlg

oQuery:GoTop():Read() // No se olvide nunca de esta linea
MySetBrowse(oLbx,oQuery) // No Olvidarse Nunca de Esta Línea
oLbx:cAlias := "ARRAY" // No Olvidarse de "ESTO", si no se tranca


Nota: Yo Utilizo el TWBROWSE, Disculpe maestro mercado :oops:
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
User avatar
ADBLANCO
 
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Postby wmormar » Fri Sep 05, 2008 2:12 pm

Como dice ADBLANCO, ya embarcado, ahí va

Code: Select all  Expand view
oCon := TMYsqlServer():new("localhost","root","mypassword")
IF oCon:lError
   ? "No hubo conexion al servidor, verifique..."
   RETURN NIL
ENDIF

oCon:SelectDB( "tutor" )
IF oCon:lError
   ? "No se encontró la base de datos tutor, verifique..."
   RETURN NIL
ENDIF

.....
.....


Bueno, ese es el código de conexión, no es tan "xbase", pero creo que es claro que con investigación, todo se puede.
William, Morales
Saludos

méxico.sureste
User avatar
wmormar
 
Posts: 1073
Joined: Fri Oct 07, 2005 10:41 pm
Location: México

Postby ADBLANCO » Fri Sep 05, 2008 2:18 pm

Un Ejemplo para actualizar (REPLACE y APPEND)

IF lContinuar
IF lNew
DO CASE
CASE nTipo=1 // RAMO
bSeek:={||'INSERT INTO '+cDTBase+'.DtsRamo(VchDescripcion,TinStatus) '+;
' VALUES( '+bTrans(cDescrip)+',1)'}
CASE nTipo=2 // COBERTURA
bSeek:={||'INSERT INTO '+cDTBase+'.DtsCobertura(IntIdDtsRamo,VchDescripcion,TinStatus) '+;
' VALUES( '+STR(nIdRamo,10,0)+','+bTrans(cDescrip)+',1)'}
OTHERWISE // SUBCOBERTURA
bSeek:={||'INSERT INTO '+cDTBase+'.DtsSubCobertura(IntIdDtsCobertura,VchDescripcion,TinStatus) '+;
' VALUES( '+STR(nIdCobert,10,0)+','+bTrans(cDescrip)+',1)'}
ENDCASE
ELSE
DO CASE
CASE nTipo=1 // RAMO
bSeek:={||' UPDATE '+cDTBase+'.DtsRamo '+;
' SET VchDescripcion ='+bTrans(cDescrip)+;
' WHERE '+cDTBase+'.DtsRamo.IntIdDtsRamo = '+STR(nIdRamo)}
CASE nTipo=2 // COBERTURA
bSeek:={||' UPDATE '+cDTBase+'.DtsCobertura'+;
' SET VchDescripcion ='+bTrans(cDescrip)+;
' WHERE '+cDTBase+'.DtsCobertura.IntIdDtsCobertura ='+STR(nIdCobert,10,0)}
OTHERWISE // SUBCOBERTURA
bSeek:={||' UPDATE '+cDTBase+'.DtsSubCobertura'+;
' SET VchDescripcion ='+bTrans(cDescrip)+;
' WHERE '+cDTBase+'.DtsSubCobertura.IntIdDtsSubCobertura ='+STR(nIdSubCobert,10,0)}
ENDCASE
ENDIF
oQuery :=TMSQuery():New( oDTbase ) // inicializa la clase
oQuery:Open( eval(bSeek) ) // efectua el query
oQuery:Close()
MSGALERT("Información Acualizada Con Exito","Atención...")
lOk :=.t.
ENDIF
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
User avatar
ADBLANCO
 
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Postby ADBLANCO » Fri Sep 05, 2008 2:21 pm

Y de eliminacion (Nosotros decidimos no eliminar sino marcar como eliminado)

IF MSGNOYES("Está Seguro de Eliminar Este "+cMsg,"Atención...")
DO CASE
CASE nTipo=1 // RAMO
bSeek:={||' UPDATE '+cDTBase+'.DtsRamo '+;
' SET TinStatus = 0'+;
' WHERE '+cDTBase+'.DtsRamo.IntIdDtsRamo = '+STR(nIdRamo)}
CASE nTipo=2 // COBERTURA
bSeek:={||' UPDATE '+cDTBase+'.DtsCobertura'+;
' SET TinStatus = 0'+;
' WHERE '+cDTBase+'.DtsCobertura.IntIdDtsCobertura ='+STR(nIdCobert,10,0)}
OTHERWISE // SUBCOBERTURA
bSeek:={||' UPDATE '+cDTBase+'.DtsSubCobertura'+;
' SET TinStatus = 0'+;
' WHERE '+cDTBase+'.DtsSubCobertura.IntIdDtsSubCobertura ='+STR(nIdSubCobert,10,0)}
ENDCASE
oQuery :=TMSQuery():New( oDTbase ) // inicializa la clase
oQuery:Open( eval(bSeek) ) // efectua el query
oQuery:Close()
ENDIF
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
User avatar
ADBLANCO
 
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Postby ADBLANCO » Fri Sep 05, 2008 2:26 pm

Ya ven que solo se trata de 'pasar' comandos al objeto de la base de datos

Ejemplos y Ejemplos, Eso es lo que necesitamos (Quien me dijo eso???)
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
User avatar
ADBLANCO
 
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Postby Biel EA6DD » Fri Sep 05, 2008 2:39 pm

Creo que ya nos estamos diluyendo, estamos bombardeando con ejemplos y código que al recién llegado lo van terminar confundiendo mas.

Lo primero que deberíamos aclarar, y decidir es que sistema vamos a usar, en pocos mensajes ya se han mencionado unas cuantas formas de hacer lo mismo. Si alguien que no lo tiene claro lee mensajes, y empieza a mezclar conceptos y trozos de código fuente, es imposible que saque nada en claro.

que obciones tenemos para acceder a la base de datos.(hasta ahora en ese hilo se ha mencionado)
1ºADORDD, nos permite usar tablas SQL con los comandos tipicos del RDD, internamente usa ADO, pero nos aisla de esa capa, sin necesidad de aprender ADO.
2º ADO , debemos aprender a manejar las calses ADODB.
3º Usar una clase que nos ayude en el manejo de ADO (como ADOBASE)
4º Prescindir de la capa ADO y atacar directamente el API del motor SQL como tMySQL
5º Se ha mencionado Eagle, que si he oido hablar de el, pero que no se como se implementa. Lo catalogaria dentro de librerias de terceros, que nos permite no tener que profundizar demasiado en ADO, nos facilitan el camino.
Todas tienen ventajas y desventajas, se trata de elegir la que mejor se adapte a nuestras necesidades.

Seguro que hay más, pero lo primero es decidir el camino a tomar, evaluando el coste en dinero, en tiempo de aprendizaje, en velocidad de acceso a los datos, etc.
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Postby Armando » Fri Sep 05, 2008 3:03 pm

Amigos:

Estoy de acuerdo con Biel (Saludos) y una vez allanado el camino, mis dos centavos.

Yo recomiendo tirar por ADO, aprenderlo es más sencillo que quitarle su dinero a una borracha !, :-)

Saludos al foro
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Postby Alfredo Arteaga » Fri Sep 05, 2008 3:49 pm

Me pongo en la posición más cómoda, tal vez no sea la más adecuada pero no pretendo tirar más de diez años de desarrollo. La posibilidad de acceder a cualquier gestor SQL sin cambiar el código xBase ya existe, barato o caro depende del bolsillo y de las espectativas de negocio.

Si alguien me solicita un nuevo desarrollo y cubre el costo seguramente pensaré en usar nuevas herramientas y si son de uso libre mejor.

Por si hay algún interesado aquí les dejo un par de ejemplos (DBF2SQL y SQL2DBF) y una explicación de la funcionalidad.

http://www.despachoarteaga.com.mx/sqlrdd.zip
User avatar
Alfredo Arteaga
 
Posts: 326
Joined: Sun Oct 09, 2005 5:22 pm
Location: Mexico

Postby Blessed » Fri Sep 05, 2008 5:26 pm

Cuando migre en serio de Clipper a FiveWin el año pasado (2007) en el camino me di cuenta de la necesidad de tambien hacerlo a SQL , asi que no de le di vueltas al asunto, y compre la libreria de Freddy Rodríguez Franjul (http://www.fcsodbc.com).
Creo que para experimentar, buscar una alternativa profesional y libre, lo he dejado en espera, primero lo primero, el pan de cada dia.
He visto que algunos son reacios a usar librerias de terceros, pero creo que no podemos darnos el lujo de posponer el uso de SQL, para cuando haya una utilidad, libreria, RDD totalmente funcional, probado y ademas libre.
Y no crean que soy impaciente, estoy programando con clipper desde 1993, y salte a FWH como lo mencione antes en el 2007.

Saludos desde Honduras :)
Oscar A. Martinez
http://www.multisofthn.com
Honduras, Centro America
xHarbour Enterprise 1.2.2, Fivewin 13.06
User avatar
Blessed
 
Posts: 243
Joined: Wed Sep 19, 2007 4:32 pm
Location: Honduras, C.A.

Postby Biel EA6DD » Fri Sep 05, 2008 5:32 pm

Hola Manuel:
mmercado wrote:Algunos lo saben y otros lo suponemos pero lo que yo, y creo que muchos otros como yo, quisieramos saber es donde están documentadas las herramientas que mencionas.

Ya he comentado en mensaje anterior que hay varios caminos a tomar. Suponiendo que tomamos la via ADO, de Harbour lo unico que haremos sera usar la instruccion CreateObject(o su equivalente tOleAuto():New()), que nos permitira ir creando los objetos ADO necesarios (ADODB.connection, ADODB.RecordSet, ...)
ADODB se maneja por igual desde cualquier lenguaje de programacion, lo que necesitamos es conocer sus colecciones, metodos y propiedades, ADODB esta extensamente documentado en la red, con multitud de ejemplos (la mayoria para lenguajes distintos a [x]Harbour, pero facilmente traducibles)

http://www.w3schools.com/ado/default.asp
http://msdn.microsoft.com/en-us/library/ms807498.aspx
La documentación existe y es amplia, pero hay que buscarla fuera de Harbour.
mmercado wrote:Quisiera saber donde puedo encontrar ejemplos que podamos hacer funcionar a la primera, de eso trata mi requerimiento, de la recopilación de ejemplos funcionales.

Ademas de los que puedas encontrar para VB, VBS, etc, en mi blog puedes encontrar unos cuantos ejemplos muy basicos, para iniciarse con ADO, usan ficheros MDB, y no necesitan de ningun servidor. Esta incluido los ejecutables, y todo el código fuente.
http://bielsys.blogspot.com/2007/11/ado-connectionstring.html
http://bielsys.blogspot.com/2008/02/usando-origenes-de-datos-ado-1.html
http://bielsys.blogspot.com/2008/04/usando-origenes-de-datos-ado-y-2.html
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Postby thefull » Fri Sep 05, 2008 8:59 pm

Yo estoy totalmente de acuerdo con Adolfo, es más, MARDITO HARBOUR QUE NO TRAE ACCESO A LOS DIFERENTES MOTORES SQL!

Si, CUALQUIER LENGUAJE , hasta el Clip, trae sus clases para acceso a distintos DMBS.

Es de pena tener que ir usando CONTRIBUCIONES de terceras personas, gracias desde aqui, que tan siguiera no estan ni mantenidas, se hace un copy/paste, hasta que ALGUN iluminado de HARBOUR les de por borrarlo.

A HARBOUR le falta un par de cosas;

- UN RAD de desarrollo multiplataforma, si es posible, existen librerias que dotan esa posibilidad , Qt, GTK+ , xWidgets.

- Acceso a los distintos motores de bases de datos.

El primero , aunque deseable, tampoco es un drama, porque tenemos diferentes alternativas, tanto de pago, como Fivewin, etc..., como libres, como MiniGUI.

El segundo, o son de pago, o la contrib , sinceramente,no son tan buenas como deberian ser, y lo digo porque he visto código de Eagle1, por poner un ejemplo, y como esta realizado y lo he comparado contra la TMySql de las contrib, y oiga, no hay color.
( Gracias desde aqui quien realizado la TmySql )

A mi modo de ver, este aspecto es de los más importantes, y una verdadera pena.

Seamos realistas, las DBF , en este tiempo, NO SIRVEN!
Tenemos servidores potentes, libres , de pago, un MySQL , un PostGres, Sqlite3, y vamos a meter DBF con indices que cuando se les van la olla, generan un drama con el tema de ;
"Se detectó corrupción...."

Hoy en dia nuestra aplicación ya NO ESTA SOLA, hoy en dia, las aplicaciones SE COMUNICAN entre ellas, por ejemplo, a traves de Web Services!!

Si Si, lo último que he visto, es una interfaz, yo no he podido hacerlo porque deberia Harbour darme la posiblidad de crear WebServices cosa que no es posible, de momento, en el cual , presuntamente mi aplicacion se comunica con otra aplicacion para el intercambio de datos.
Es decir, mi aplicacion PUBLICA unos methods determinados, y la otra aplicacion PUBLICA los suyos.
Al final, toca ir contra ORACLE, en este caso, porque asi LO ESTABLECE EL CLIENTE!.

Lógicamente, yo, con Harbour, esto no es posible hacer, o no en un tiempo razonable.

Señores, hay que empezar a quitarse de la mente el querer que Harbour sea nuestro SALVADOR de nuestras viejas aplicaciones, simplemente lavandole la cara y a seguir vendiendo.
Esto, desgraciadamente, es pan para hoy, hambre para mañana.

En fin, ahora me toca pelearme con Delphi ;-(
Saludos
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
User avatar
thefull
 
Posts: 729
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona

Postby csincuir » Sat Sep 06, 2008 10:09 pm

Pues yo estoy de acuerdo con varios y en desacuerdo con otros, como le debe de pasar a muchos, pero igual quiero dar mi punto de vista, si de algo sirve.

El SQL actualmente debería ser la herramienta a utilizar en nuestros desarrollos, y hablo del lenguaje en si, sin pensar en el motor que lo utilice ni la herramienta que utilicemos para trabajarlo, ya que sus diferencias tendran, per lo basico lo tienen todos, las cuatro famosas instrucciones: SELECT, INSERT, UPDATE y DELETE

Pero si la situación es la de Alfredo Arteaga, para no tirar tantos años de desarrollo pues estan las opciones de los RDD's que emulan los comandos de las DBF's para atacar dichos motores de bases de datos.

Si nosotros sabemos utilizar SQL para obtener datos de los motores de bases de datos, ya tenemos una de las capas principales para desarrollar cualquier proyecto robusto, y nos da la ventaja de hacerlo con cualquier motor de base de datos, ya sea MySQL, SQL Server, Oracle, DB2, Firebird, PostgreSQL, etc.,etc. de los cuales unos son gratis, otros no, pero igual tiene su version express.

Herramientas para utilizar SQL con (x)Harbour y FiveWin, pues ya tenemos y algunas las han mensionado en este hilo, y hasta ejemplos ha puesto ya, solo quiero aclarar unas cosas, ya que Rafa mensionaba Eagle1 y TMySql, y no miraba ninguna diferencia, pero si no estoy mal, la diferencia es que Eagle1 ataca MySql sin necesidad de generar un conección ODBC, ya que lo hace a traves de una DLL de comunicación propia de MySql.

Pero estas dos herramientas solo sirve para MySQL, y los otros motores? pues como bien dice Biel o Adolfo, esta ADO y AdoBase,pero igual, si no tenemos la base de SQL de nada nos servira.

En fin, a lo que quiero llegar es que si queremos pasarnos a SQL, olvidemonos de las DBF's y de los "USE" y de los RDD's, y aprendamos el SQL como tal, y esto cuesta debido a tanto año de estar con ellos, pero el esfuerzo hay que hacerlo.

Pero igual, no solo de SQL necesitamos para desarrollar nuestras aplicaciones en estos días, como ya decía anteriormente, solo es una de las capas del desarrollo, y que pasa despues con la reportería (PDF's), o una herramienta para Internet (Html, Web Services, ASP, etc.), y el muy comentado y deseado IDE pues.

Aca dependemos del trabajo de FiveTech, y varias veces se ha escrito por aca sobre lo mismo, pero Antonio nunca ha dado una respuesta a estos temas, y muchos de aca, como dice Carlos Gallego, ya le hemos entrado a FiveWin + (x)Harbour, y creo que hemos dado nuestra lealtad a FiveTech de seguir actualizando las versiones de FiveWin, pero siempre vemos en las "Whats New" que son arreglos o mejoras al lo que ya se tiene (pero casi siempre son arreglos) y nunca nada de lo que se hablado en este hilo:

- Herramienta para Acceso directo a motores SQL
- Herramienta para generar reportes (o reporteador grafico)
- Herramienta para desarrollo de internet
- IDE (Que es lo uniría todo)

Pero por algo se debe de empezar, y por eso apoyo lo de crear un Foro de SQL, pero en español, y si se quiere otro en Ingles, etc., para poner nuestras diferentes dudas y ayudas para entrarnos a esto del SQL.

Bueno, espero no molestar a nadie con mis comentarios.

Saludos.

Carlos Sincuir.
csincuir
 
Posts: 396
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala

Postby Antonio Linares » Sat Sep 06, 2008 11:21 pm

Por nuestra parte vamos a investigar la posibilidad de realizar un RDD tipo SQLRDD pero que sea de código abierto y gratuito, con la idea de que entre todos lo afinemos y que nuestras aplicaciones, desarrolladas durante años, se puedan reutilizar.

El ADORDD, es util para procesos simples, pero ha demostrado las limitaciones del ADO para emular un RDD completo. Es decir, sirve para operaciones básicas, pero no permite cambiar de DBFCDX (por ejemplo) a ADORDD, recompilar y listo.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

PreviousNext

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 84 guests