Página 1 de 1
Migrando a MariaDB
Publicado: Lun Dic 28, 2020 12:25 pm
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.
Re: Migrando a MariaDB
Publicado: Lun Dic 28, 2020 5:05 pm
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!
Re: Migrando a MariaDB
Publicado: Mar Dic 29, 2020 5:10 am
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.
Re: Migrando a MariaDB
Publicado: Mié Dic 30, 2020 11:10 am
por Ariel
Ramon,
AppData:oMySQLDS:lConnected:= .t.
debe quedar abierto para usarlo en la app
Saludos.
Re: Migrando a MariaDB
Publicado: Mié Feb 03, 2021 10:42 pm
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.
Re: Migrando a MariaDB
Publicado: Mié Feb 03, 2021 11:09 pm
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
Re: Migrando a MariaDB
Publicado: Mié Feb 03, 2021 11:31 pm
por ramonzea
Gracias, ahora si va perfecto.