Foros Néfele 4 Harbour › Foros › Dudas › MariaDB
- Este debate tiene 17 respuestas, 5 mensajes y ha sido actualizado por última vez el 3 años, 8 meses por Xevi. This post has been viewed 936 times
-
AutorEntradas
-
-
01-03-2021 a las 01:46 #1720ramonzeaParticipante
No se puede usar aún MariaDB en Néfele?
O habrá alguna actualización de paga para adquirirla?
Saludos.
-
01-03-2021 a las 11:50 #1721Pedro AmaroSuperadministrador
La ultima versión de la librería de Néfele incluye todo lo necesario para conectarte a MariaDB, MySQL, SQLServer, FireBird y PostgreSQL, la conexión se realiza por ODBC por lo que tendrás que tener instalados los clientes ODBC necesarios, si utilizas la función nfl_sqlconnect se encargara de avisarte si tiene instalado correctamente el cliente ODBC necesario y en caso de que no es te ofrecerá un enlace para su descarga.
En el Samples de Néfele tienes ejemplos de acceso a BBDD MariaDB, MySQL, SQLServer y FireBird, también se puede conectar con PostgreSQL pero quedo fuera de esa versión del sample.
En el Wiki tienes explicado todo.
Saludos
-
01-03-2021 a las 16:01 #1723ramonzeaParticipante
Lo que no encuentro es el ejemplo del archivo de conexión, y al ejecutarlo en la app, me pide los datos y al final marca error:
Néfele Project error
No se ha incluido la función EDITORINI Function is not included.
No olvides que hay que declarar / Do not forget to declare
METHOD EDITORINI( )
dentro de / inside
Class TCgi FROM XCgiLo he declarado pero no guarda el archivo o no identifico dónde lo deposita, y regresa a la pantalla de captura de todos los datos.
Saludos.
- Esta respuesta fue modificada 3 años, 8 meses por ramonzea.
-
01-03-2021 a las 16:50 #1725Alfredo SanzSuperadministrador
En el enrutador de prg, justo debajo de
Class TCgi FROM XCgi
pon esta línea
METHOD editorini() INLINE nfl_editorini()
-
01-03-2021 a las 18:59 #1726ramonzeaParticipante
Ya lo he logrado!!!
Tenía una función llamada exactamente igual a MariaDBConnect, aparte que en el REQUEST como marca el ejemplo me daba error al compilar,
NO EXISTE HB_FUN_MariaDBConnect
la he renombrado y eliminado el REQUEST y me ha creado el archivo de configuración.
Esta encriptado?
Saludos.
-
01-03-2021 a las 19:46 #1728ramonzeaParticipante
Ma arroja error:
Error en /inventarioz
El siguiente error ha ocurrido: Message not found
WAdoConnect:_CSELECT
BASE 1005
Arguments: [ 1] = Tipo: O Valor:
Error code: 0
Llamado desde __ERRRT_SBASE(0)
Llamado desde WADOCONNECT:ERROR(0)
Llamado desde (b)HBOBJECT(0)
Llamado desde WADOCONNECT:MSGNOTFOUND(0)
Llamado desde WADOCONNECT:_CSELECT(0)
Llamado desde INGRESACLIENTE(21)
Llamado desde ACCESSCONTROL(127)
Llamado desde (b)TCGI(39)
Llamado desde TCGI:ACCESSCONTROL(0)
Llamado desde __OBJSENDMSG(0)
Llamado desde TCGI:RUN(1264)
Llamado desde CGI_INIT(24)
Llamado desde MAIN(26)Saludos.
-
02-03-2021 a las 02:06 #1734Alfredo SanzSuperadministrador
Hola,
Enséñame la función ingresacliente()
-
-
01-03-2021 a las 19:49 #1727Mario GarciaParticipante
Siguiendo este hilo, yo estoy tratando de conectarme por SQL Server, sin exito.
Se puede utilizar la clase TAdoDataSource(), he probado con los metodos y funciones del wiki, pero aun no he logrado.
La version de ODBC, debe ser a 32 bits?, ya que el instalador de windonws, no lo permite, solo el de 64 bits.
He utilzado :
WITH OBJECT Conexion := wAdoConnect():New()
:cHost := cServidor
:cUser := cUsuarios
:cPassword := cPassword
:nEngine := xc_SQLServer
:Connect()
oCGI:Console( "Conectado = " + ToString( :Connect()) )END WITH
Tambien :
WITH OBJECT oSQL := nfl_SqlConnect("configdb", xc_SQLServer , oCGI:cMainFunction) AS wADOConnect
IF oSQL<>Nil
// Hacemos una consulta SQL
aUsuario := :QueryArrayHash("SELECT Password ,expiracion FROM usuarios "WHERE usuario ='" + cUsu + "'")
:Disconnect()
ELSE
Return .f.
ENDIF
END WITHSaludos
-
01-03-2021 a las 20:17 #1730XeviParticipante
Yo estoy trabajando PERFECTAMENTE con MariaDB
Tengo mi funcioncilla, la que llamo en cada conexión que quiero realizar.
Si a alguien puede ser de utilidad...
12345678910111213141516171819202122232425262728293031323334353637FUNCTION xcm_MdbConnect( cDataBase, cHost, cUser, cPassword )Local oObjectDEFAULT cHost TO "localhost"DEFAULT cUser TO "miusuario"DEFAULT cPassword TO "mipassword"oCGI:Console( "cHost = " + cHost )If AScan( nfl_GetDriversODBC( xc_MariaDB ), {|x| x = "MariaDB" } ) > 0oCGI:Console( "MariaDB ODBC Driver" )WITH OBJECT oObject := WAdoConnect():New():nEngine := xc_MariaDB:cDriver := "MariaDB ODBC 3.0 Driver":lDisplayErrors := .F.:cHost := cHost:cUser := cUser:cPassword := cPasswordIf cDataBase # Nil:cDataBase := cDataBaseEndIfEND WITHElseoCGI:Console( "MariaDB Xailer" )WITH OBJECT oObject := TMariaDBDataSource():Create():lDisplayErrors := .F.:cHost := cHost:cUser := cUser:cPassword := cPasswordIf cDataBase # Nil:cDataBase := cDataBaseEndIfEND WITHEndIfRETURN oObjectAsí voy probando un u otro conector a MariaDB.
Eso si, para Néfele, se ha de instalar el driver 32bits, como está descrito en el sample.
-
01-03-2021 a las 21:18 #1731Mario GarciaParticipante
Gracias Xavi y como consumes el objeto, o como se hace la consulta?
-
02-03-2021 a las 00:19 #1732XeviParticipante
Pues, por ejemplo...
12345WITH OBJECT xcm_MdbConnect()If :Connect()aBICswift := :QueryArray( "SELECT * FROM gwin.bicswift" ):Disconnect()EndIfo
1234567WITH OBJECT xcm_MdbConnect( "xevi", AppData:cServerMDB )If :Connect()aQuery := :QueryArray( "SELECT registre,codi FROM registresactius" ):Disconnect()ElseReturnEndIf -
02-03-2021 a las 01:29 #1733Mario GarciaParticipante
Gracias lo trasladare a SQL Server.
-
02-03-2021 a las 14:48 #1735ramonzeaParticipante
Quiero compilar y ver el resultado del ejemplo wiki, pero me sale este error:
REQUEST MariaDBConnect
Enlazando nefele_wiki.exe...
C:/xBase/Nefele/samples/Nefele_Wiki/Obj/Main.do:Main.c:(.data+0x1b8): undefined reference to `HB_FUN_MARIADBCONNECT'
0 Files, 0 Warnings, 1 Errors
Tiempo de compilación: 0.00s Tiempo de enlazado: 1.79s Tiempo total: 1.86sSaludos.
-
02-03-2021 a las 16:13 #1736ramonzeaParticipante
Estoy probando el QueryRecordSet, según debo acceder a los registros con dos puntos y el nombre del campo, pero me marca error.
oRecordResult:rfc
El siguiente error ha ocurrido: No exported method
RFC
WINOLE 1009
Error code: -2147352570
Llamado desde TOLEAUTO:RFC(0)Saludos.
-
02-03-2021 a las 20:05 #1737XeviParticipante
Ramon, si no dispones de la versión Enterprise de Xailer, debes de prescindir de incluir la llamada a la clase TMariaDBDataSource()
Si dispones de la versión Enterprise, debes de incluir la lib correspondiente.Si solo quieres utilizar el driver ODBC de Harbour/Néfele...
12345678910111213141516171819202122232425262728293031323334353637383940FUNCTION xcm_MdbConnect( cDataBase, cHost, cUser, cPassword )Local oObjectDEFAULT cHost TO "localhost"DEFAULT cUser TO "miusuario"DEFAULT cPassword TO "mipassword"oCGI:Console( "cHost = " + cHost )If AScan( nfl_GetDriversODBC( xc_MariaDB ), {|x| x = "MariaDB" } ) > 0oCGI:Console( "MariaDB ODBC Driver" )WITH OBJECT oObject := WAdoConnect():New():nEngine := xc_MariaDB:cDriver := "MariaDB ODBC 3.0 Driver":lDisplayErrors := .F.:cHost := cHost:cUser := cUser:cPassword := cPasswordIf cDataBase # Nil:cDataBase := cDataBaseEndIfEND WITHElse/*oCGI:Console( "MariaDB Xailer" )WITH OBJECT oObject := TMariaDBDataSource():Create():lDisplayErrors := .F.:cHost := cHost:cUser := cUser:cPassword := cPasswordIf cDataBase # Nil:cDataBase := cDataBaseEndIfEND WITH*/oCGI:Console( "Driver NO ENCONTRADO o NO INSTALADO" )EndIfRETURN oObjectPrueba así
-
02-03-2021 a las 21:34 #1738Mario GarciaParticipante
Probe con la funcion de Xavi y SQL Server, y funciono desde el navegador
Ya cuento con Xailer 7 Enterprise, y al ejecutarlo como CGI, desde el IDE, marca error de conexion.
Por si les sirve la informacion.
-
02-03-2021 a las 23:57 #1739ramonzeaParticipante
Xevi:
Es correcto, ya ahora instalé todo para usarlo con WADOConnect, pero al parecer no me da el resultado buscado o no lo aplico correctamente, quiero que me regrese un recordset, que a mi parecer es una estructura, y acceder a datos sin tener que tener que controlar posiciones de un array, ejemplo: oRS:rfc, oRS:nombre, etc., por que a veces hago un select de 2 o 3 tablas y en algunos casos son todos los campos que estas contengan.
Saludos.
-
03-03-2021 a las 00:53 #1740XeviParticipante
Ramon,
lo que pretendes es disponer de una clase TDataSet o TRecordSet de la base de datos o tabla... me da que no está implementada.
Pero te puedes crear una clase y vas añadiendo, ampliando a medida que vayas necesitando... y si finalmente se implementa una clase, pues todo eso que se aprende.
En acceso a DBFs lo veo muy útil, pero para SQL, como lo haces todo en una sentencia Execute o Query... de momento no lo he necesitado
Para modelo de datos para DBFs lo que hago es tener mi clase (modelo) para abrir mi base de datos, tabla y cargo en un hash los datos que voy necesitando de esa tabla.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768//------------------------------------------------------------------------------//------------------------------------------------------------------------------// Classe Model FACTURES DBFs//------------------------------------------------------------------------------//------------------------------------------------------------------------------CLASS FacturesDbfModelDATA cAliasMETHOD New() CONSTRUCTORMETHOD GetId()METHOD Load()ENDCLASS*********METHOD New( cEmp, cnTag ) CLASS FacturesDbfModelLocal cFileDEFAULT cEmp TO oCgi:GetUserData('gwinemp')cFile := oCgi:GetUserData('gwinpath') + cEmp + "\Factu."USE (cFile+"Dbf") SHARED NEW::cAlias := Alias()If cnTag # NilOrdListAdd( (cFile+"Cdx") )OrdSetFocus(cnTag)EndIfRETURN SELF*********METHOD GetId( nId ) CLASS FacturesDbfModelDEFAULT nId TO 0(::cAlias)->( DbGoTo( nId ) )RETURN ::Load()*********METHOD Load() CLASS FacturesDbfModelLocal hRow := {=>}hRow[ 'id' ] := (::cAlias)->( Recno() )hRow[ 'factura' ] := AllTrim( (::cAlias)->FACTURA )hRow[ 'datafac' ] := DtoC( (::cAlias)->datafac )hRow[ 'nom' ] := AllTrim( (::cAlias)->nom )hRow[ 'adreca' ] := AllTrim( (::cAlias)->adreca )hRow[ 'poblacio' ] := AllTrim( (::cAlias)->poblacio )hRow[ 'import' ] := Transform( (::cAlias)->tot, "@E 9,999,999.99" )hRow[ 'codi' ] := AllTrim( (::cAlias)->CODI )hRow[ 'total' ] := Alltrim(Transform( TotalFactura(::cAlias), "@E 999,999,999.99" ))hRow[ 'nif' ] := AllTrim( (::cAlias)->DNI )RETURN hRowse pueden crar más métodos... como seria Add() Replace() Seek()
Igual te puede servir para guiarte en tu implementación de una clase propia.
- Esta respuesta fue modificada 3 años, 8 meses por Xevi.
-
-
AutorEntradas
- Debes estar registrado para responder a este debate.