In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Migrando a MariaDB

Foro público de Xailer en español
Responder
Avatar de Usuario
ramonzea
Mensajes: 130
Registrado: Mar Sep 15, 2015 6:42 am
Ubicación: México
Contactar:

Migrando a MariaDB

Mensaje por ramonzea »

Estoy empezando a pasar mi aplicación a BBDD MariaDB, y tengo un detalle:
estoy usando campos BIT, para usarlos como campos lógicos, pero al momento de usarlo en un IF no ejecuta la comparación correctamente, si lo verifico en el depurador me devuelve .T., pero en la ejecución lo toma como .F..

Qué estoy haciendo mal?

Otra duda es como manejar la conexión a la BBDD, debo hacerlo al inicio de la aplicación y mantenerla viva? o debo hacer la conexión solo cada vez que debo leer o grabar información?

Gracias.
Avatar de Usuario
gabo1
Mensajes: 127
Registrado: Lun Oct 13, 2014 9:42 am

Re: Migrando a MariaDB

Mensaje por gabo1 »

Ramon

Código: Seleccionar todo

Nombre      Tipo        Longitud Valor Predeterminado
tiene_iva    TinyInt     1               '0' (False)  '1' (True)

Código: Seleccionar todo

// Al inicio de tu aplicacion 
        WITH OBJECT AppData:oMySQLDS:= TMariaDBDataSource():New()  // DataSource Principal
             :cHost:= AllTrim(::oSQLEmpresas:servidor_ip)
             :cPassword:= AllTrim(::oSQLEmpresas:servidor_password)
             :cUser:= AllTrim(::oSQLEmpresas:servidor_user)
             :cDataBase:= AllTrim(::oSQLEmpresas:servidor_db)
             :nPort:= ::oSQLEmpresas:servidor_port
             :lConnected:= .F.
             :lDisplayErrors:= .T.
             :Create()
        END WITH     
// En el primer codigo que te envie tiene un comentario // SPLASH es el primer form tipo splash y es donde ejecuto la conexion posteriormente en el Initialize de tus forms // o ABC usas el datasource principal con los dataset que vas utilizar

  WITH OBJECT ::oSQLEmpresas
      :oDataSource:= AppData:oMySQLDS   // Aqui esta el datasource 
      :cSelect:= "SELECT * FROM empresas WHERE id_empresa='"+ AppData:cIDCompany + "'"
      :lDisplayErrors := .T.
      :Open()
      IF !:lOpen
         WaitOff()
         MsgStop( "ERROR!: No es posible abrir la tabla de Empresas", "Error de Conexión.." )
         RETURN NIL
      ENDIF
  END
Saludos!
Avatar de Usuario
ramonzea
Mensajes: 130
Registrado: Mar Sep 15, 2015 6:42 am
Ubicación: México
Contactar:

Re: Migrando a MariaDB

Mensaje por ramonzea »

Gracias nuevamente, pero en el inicio queda
AppData:oMySQLDS:lConnected:= .F.

Y en los Forms a los TSQLQUERY se asigna el DataSource principal, pero sigue con el el mismo valor, yo hacía en los primeros procesos que que he desarrollado es:

if ( AppData:oMySQLDS:Connect() )
::::
Abro los TSQLQUERY y hago las lecturas y grabaciones
::::
AppData:oMySQLDS:Disconnect()
End

o si debo hacer
AppData:oMySQLDS:Connect()
y mantener la conexión viva con el MY_SQLPING(), según he leído.

Saludos.
Ariel
Mensajes: 26
Registrado: Mar Nov 26, 2019 12:28 pm

Re: Migrando a MariaDB

Mensaje por Ariel »

Ramon,

AppData:oMySQLDS:lConnected:= .t.

debe quedar abierto para usarlo en la app

Saludos.
Avatar de Usuario
ramonzea
Mensajes: 130
Registrado: Mar Sep 15, 2015 6:42 am
Ubicación: México
Contactar:

Re: Migrando a MariaDB

Mensaje por ramonzea »

Por qué al leer:

aPrecios := :QueryArray("Select descripcion, utilidad, id_precio from articuloprecios " + ;
" Where id_almacen = " + NToC(aAlmacen[1]) + " and " + ;
" id_articulo = " + NToC(::nIdProducto) + " ")

donde id_precio es 0,1,2,3,4,5, me regresa id_precio como boleano?
idprecio TinyInt

Gracias.
hgarciaj
Mensajes: 107
Registrado: Jue Sep 23, 2010 12:44 am

Re: Migrando a MariaDB

Mensaje por hgarciaj »

Ramón,
Xailer le da tratamiento a los campos tynit como lógicos, lo mejor es usar smallint para numéricos enteros no muy grandes,
por otro lado te sugiero usar el método BuildSQLST para que los parámetros que vaya a usar tu query no tengas que convertirlos, así la instrucción:
QueryArray("Select descripcion, utilidad, id_precio from articuloprecios " + ;
" Where id_almacen = " + NToC(aAlmacen[1]) + " and " + ;
" id_articulo = " + NToC(::nIdProducto) + " ")
la podrias hacer en dos pasos
cComand:="Select descripcion, utilidad, id_precio from articuloprecios Where id_almacen = ? and id_articulo = ? "
cCommand:=:buildSQLST(cCommand,aAlmacen[1],::nIdProducto)
aPrecios:=:QueryArray(cCommand)
el método hace las conversiones necesarias de acuerdo al tipo de dato que sea el parámetro que se envíe
Saludos
Héctor García
Avatar de Usuario
ramonzea
Mensajes: 130
Registrado: Mar Sep 15, 2015 6:42 am
Ubicación: México
Contactar:

Re: Migrando a MariaDB

Mensaje por ramonzea »

Gracias, ahora si va perfecto.
Responder