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.
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.
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
Re: Migrando a MariaDB
Ramon
Saludos!
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
Re: Migrando a MariaDB
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.
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
Ramon,
AppData:oMySQLDS:lConnected:= .t.
debe quedar abierto para usarlo en la app
Saludos.
AppData:oMySQLDS:lConnected:= .t.
debe quedar abierto para usarlo en la app
Saludos.
Re: Migrando a MariaDB
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.
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
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
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
Héctor García
Re: Migrando a MariaDB
Gracias, ahora si va perfecto.