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.
Como hacer la conexion mas rapida con mysql
-
- Mensajes: 266
- Registrado: Mar Oct 28, 2008 4:41 am
Como hacer la conexion mas rapida con mysql
Estimados amigos, saludos.
Pues otra vez dando molestias.
Ya casi termino un proyecto usando mysql, pero me encontre un detalle.
¿ Como puedo hacer para que al momento de abrir un formulario desde el
formulario principal no se tarde en volver hacer la conexion con el servidor
?
ESTO LO HAGO EN UNA RED LOCAL
Logicamente que en el pc que funciona como servidor no se tarda tanto
Trataré de explicar mi necesidad.
Tengo un formulario principal en el cual está el menu de todo el sistema,
desde ahi abro un formulario que se llama clientes
logicamente en este formulario llamado clientes hago la conexion con mysql.
cDatabase=Mi_Base
cHost=La IP del servidor (192.168.1.x)
cPassword=Mi password
cUser=root
Y pues la verdad se tarda como 4 o más segundos al abrir el formulario.
Asi mismo tengo mas formularios y hago lo mismo en cada uno
cDatabase=Mi_Base
cHost=La IP del servidor (192.168.1.x)
cPassword=Mi password
cUser=root
¿ Hay alguna forma de que desde el menu principal haga la conexion y que en
los formularios ya no tenga que estar haciendo esto?
De antemano mil gracias
Pues otra vez dando molestias.
Ya casi termino un proyecto usando mysql, pero me encontre un detalle.
¿ Como puedo hacer para que al momento de abrir un formulario desde el
formulario principal no se tarde en volver hacer la conexion con el servidor
?
ESTO LO HAGO EN UNA RED LOCAL
Logicamente que en el pc que funciona como servidor no se tarda tanto
Trataré de explicar mi necesidad.
Tengo un formulario principal en el cual está el menu de todo el sistema,
desde ahi abro un formulario que se llama clientes
logicamente en este formulario llamado clientes hago la conexion con mysql.
cDatabase=Mi_Base
cHost=La IP del servidor (192.168.1.x)
cPassword=Mi password
cUser=root
Y pues la verdad se tarda como 4 o más segundos al abrir el formulario.
Asi mismo tengo mas formularios y hago lo mismo en cada uno
cDatabase=Mi_Base
cHost=La IP del servidor (192.168.1.x)
cPassword=Mi password
cUser=root
¿ Hay alguna forma de que desde el menu principal haga la conexion y que en
los formularios ya no tenga que estar haciendo esto?
De antemano mil gracias
- Carlos Ortiz
- Mensajes: 873
- Registrado: Mié Jul 01, 2009 5:44 pm
- Ubicación: Argentina - Córdoba
- Contactar:
Como hacer la conexion mas rapida con mysql
Te recomendaria leer la página de José Alfonso y ver el tema Introducción al Modelo de datos I y II.
Como lo hago yo, a lo mejor hay otra manera.
En el main (PRG principal) creo un par de datas con esto
Procedure Main()
AppData:AddData("oOdbcDS")
AppData:AddData("oSQL")
TForm2():New( Application ):Show()
Application:cTitle := "OdbcTest"
Application:lSingleInstance := .T.
Application:Run()
Return
En el Create del Form2 llamo a una funcion que me conecta con el servidor
METHOD FormCreate( oSender ) CLASS TForm2
IF !ConectarAlMotor()
// Se hace una vez y nada mas
msgstop("No se ha podido establecer la conexión con el motor")
Application:Terminate()
Quit
ENDIF
RETURN Nil
y despues en el FormInitialize llamo a las clases que me hacen falta instanciar para acceder a sus metodos
METHOD FormInitialize( oSender ) CLASS TForm2
::oPersona := Personas():New( Self )
AppData:oSql := Sql():New( Self )
::oBevel1:lEnabled:=.f.
RETURN Nil
la clase Sql() es nuestra y sirve para hacer las llamadas a los metodos queryarray, query, execute y queryvalue propias, atrapa los errores y un par de cosas mas para mostrar estados en pantalla.
Esta armado asi para poner en práctica el MVC - Modelo - Vista - Controlador y evitar que las pantallas accedan a los datos, y por otro lado tener clases abstractas que centralicen y realicen el mantenimiento de los datos.
Me ha servido mucho lo expuesto por José Alfonso Suarez
CLASS Sql From TComponent
METHOD QA( cSelect, aCabeceras )
METHOD QU( cSelect, oDataSet )
METHOD EX( cSelect )
METHOD QV( cSelect )
PROPERTY cError INIT ""
PROPERTY nError INIT 0
ENDCLASS
Espero sirva de ayuda.
Saludos, Carlos Ortiz.
--
Como lo hago yo, a lo mejor hay otra manera.
En el main (PRG principal) creo un par de datas con esto
Procedure Main()
AppData:AddData("oOdbcDS")
AppData:AddData("oSQL")
TForm2():New( Application ):Show()
Application:cTitle := "OdbcTest"
Application:lSingleInstance := .T.
Application:Run()
Return
En el Create del Form2 llamo a una funcion que me conecta con el servidor
METHOD FormCreate( oSender ) CLASS TForm2
IF !ConectarAlMotor()
// Se hace una vez y nada mas
msgstop("No se ha podido establecer la conexión con el motor")
Application:Terminate()
Quit
ENDIF
RETURN Nil
y despues en el FormInitialize llamo a las clases que me hacen falta instanciar para acceder a sus metodos
METHOD FormInitialize( oSender ) CLASS TForm2
::oPersona := Personas():New( Self )
AppData:oSql := Sql():New( Self )
::oBevel1:lEnabled:=.f.
RETURN Nil
la clase Sql() es nuestra y sirve para hacer las llamadas a los metodos queryarray, query, execute y queryvalue propias, atrapa los errores y un par de cosas mas para mostrar estados en pantalla.
Esta armado asi para poner en práctica el MVC - Modelo - Vista - Controlador y evitar que las pantallas accedan a los datos, y por otro lado tener clases abstractas que centralicen y realicen el mantenimiento de los datos.
Me ha servido mucho lo expuesto por José Alfonso Suarez
CLASS Sql From TComponent
METHOD QA( cSelect, aCabeceras )
METHOD QU( cSelect, oDataSet )
METHOD EX( cSelect )
METHOD QV( cSelect )
PROPERTY cError INIT ""
PROPERTY nError INIT 0
ENDCLASS
Espero sirva de ayuda.
Saludos, Carlos Ortiz.
--
@dbfarma
www.dbfarma.com.ar
www.dbfarma.com.ar
-
- Mensajes: 266
- Registrado: Mar Oct 28, 2008 4:41 am
Como hacer la conexion mas rapida con mysql
Amigo Carlos, gracias por tu ayuda.
Solo que tengo ese problema de no entender bien el metodo que estas usando.
Trate de ponerlo en practica pero no sale.
Perdón por mi ignorancia.
Pero si tuvieras un ejemplo mas practico y me lo proporcionaras te lo agradeceré.
por ejemplo un formulario principal donde se haga la conexion y otro en el cual se hace una consulta .
Nuevamente, mil gracias.
--
Solo que tengo ese problema de no entender bien el metodo que estas usando.
Trate de ponerlo en practica pero no sale.
Perdón por mi ignorancia.
Pero si tuvieras un ejemplo mas practico y me lo proporcionaras te lo agradeceré.
por ejemplo un formulario principal donde se haga la conexion y otro en el cual se hace una consulta .
Nuevamente, mil gracias.
--
-
- Mensajes: 360
- Registrado: Mié Dic 03, 2008 5:05 am
Como hacer la conexion mas rapida con mysql
PEDRO DE LEON RODAS wrote:
> Amigo Carlos, gracias por tu ayuda.
>
> Solo que tengo ese problema de no entender bien el metodo que estas usando.
> Trate de ponerlo en practica pero no sale.
>
> Perdón por mi ignorancia.
>
> Pero si tuvieras un ejemplo mas practico y me lo proporcionaras te lo
> agradeceré.
>
> por ejemplo un formulario principal donde se haga la conexion y otro en
> el cual se hace una consulta .
>
> Nuevamente, mil gracias.
Hola Pedro !
En el Menu Principal ó Formulario Principal yo hago esto :
METHOD FormInitialize( oSender ) CLASS TMenuPrincipal
AppData:AddData( "cnn", "")
WITH OBJECT ::oDBMYSQL
:cHost:="Nombreservidor"
:cDatabase:="nombrebasededatos"
:cUser:="usuario"
:cPassword:="password"
Waiton("Conectando con Base de Datos ....")
IF !:Connect()
MSGSTOP('Error al Conectar a la Base de Datos ','Error')
QUIT
else
msginfo("Conexión OK")
ENDIF
waitoff()
// Variable con la conexion a la base da datos para usar en todos
los //formularios
AppData:AddData( "cnn",::oDBMYSQL)
END WITH
y en cualquier formulario haz lo siguiente:
METHOD FormInitialize( oSender ) CLASS TClientes
WITH OBJECT ::oSQLCLIENTES
// ASIGNAR a oDataSource la Variable con la conexion a la BD
:oDataSource:=AppData:cnn // <=== AQUI ESTA LA VARIABLE
:cSelect:="Select * From clientes"
IF :lOpen
:Close()
ENDIF
IF !:lOpen
:lOpen:=.T.
IF !:lOpen
MSGSTOP('Error al Abrir Archivo de Clientes','Error')
::Close()
ENDIF
ENDIF
END WITH
Saludos...
> Amigo Carlos, gracias por tu ayuda.
>
> Solo que tengo ese problema de no entender bien el metodo que estas usando.
> Trate de ponerlo en practica pero no sale.
>
> Perdón por mi ignorancia.
>
> Pero si tuvieras un ejemplo mas practico y me lo proporcionaras te lo
> agradeceré.
>
> por ejemplo un formulario principal donde se haga la conexion y otro en
> el cual se hace una consulta .
>
> Nuevamente, mil gracias.
Hola Pedro !
En el Menu Principal ó Formulario Principal yo hago esto :
METHOD FormInitialize( oSender ) CLASS TMenuPrincipal
AppData:AddData( "cnn", "")
WITH OBJECT ::oDBMYSQL
:cHost:="Nombreservidor"
:cDatabase:="nombrebasededatos"
:cUser:="usuario"
:cPassword:="password"
Waiton("Conectando con Base de Datos ....")
IF !:Connect()
MSGSTOP('Error al Conectar a la Base de Datos ','Error')
QUIT
else
msginfo("Conexión OK")
ENDIF
waitoff()
// Variable con la conexion a la base da datos para usar en todos
los //formularios
AppData:AddData( "cnn",::oDBMYSQL)
END WITH
y en cualquier formulario haz lo siguiente:
METHOD FormInitialize( oSender ) CLASS TClientes
WITH OBJECT ::oSQLCLIENTES
// ASIGNAR a oDataSource la Variable con la conexion a la BD
:oDataSource:=AppData:cnn // <=== AQUI ESTA LA VARIABLE
:cSelect:="Select * From clientes"
IF :lOpen
:Close()
ENDIF
IF !:lOpen
:lOpen:=.T.
IF !:lOpen
MSGSTOP('Error al Abrir Archivo de Clientes','Error')
::Close()
ENDIF
ENDIF
END WITH
Saludos...
-
- Mensajes: 180
- Registrado: Lun Sep 15, 2008 2:53 pm
Como hacer la conexion mas rapida con mysql
Pedro
A mi me enseñaron en el grupo y hago esto
creo la conexion al iniciar y la asigno a un AppData, desde ahi esta
disponible en todos los formularios. Yo conecto y desconecto a volutad. Pero
si vos queres lo dejas siempre conectado y listo.
En el menu:
CLASS TFormMenu FROM TForm
// Parametros de la base de datos
COMPONENT oBasedeDatos
AppData:AddData("cHost")
AppData:AddData("cUser")
AppData:AddData("cPassword")
AppData:AddData("cDatabase")
AppData:AddData("ConexionesActivas", 0 )
ENDCLASS
METHOD FormInitialize( oSender ) CLASS TFormMenu
// Acceso a la base de datos. Tengo los datos en un DBF
Use Conexion New Exclusive Alias Conec
AppData:cHost := Alltrim(Conec->DIRECIP)
AppData:cUser := Alltrim(Conec->USUARIO)
AppData:cPassWord := "contrasena"
AppData:cDataBase := Alltrim(Conec->BASE)
Conec->( dbCloseArea() )
WITH OBJECT ::oBasedeDatos := TMySQLDataSource():New()
:cDataBase := AppData:cDataBase
:cHost := AppData:cHost
:cPassword := AppData:cPassWord
:cUser := AppData:cUser
:nPort := 3306
:nTimeOut := 1000
:lConnected := .F. // si no queres estar conectado
:lDisplayErrors := .T.
:Create()
END
AppData:AddData("oBase", ::oBasedeDatos )
// Fin de creacion de base de datos
Luego en todos los formularios
AppData:oBase:lConnected := .T. // conectar
AppData:oBase:Execute( "Select alias from usuarios order by alias",,@aData)
AppData:oBase:lConnected := .F. // desconectar
Si estas siempre conectado obvia los lConnected
Espero te sirva
Juan
"PEDRO DE LEON RODAS" <7773613810@prodigy.net.mx> escribió en el mensaje
news:[email=499cbc0a@svctag-j7w3v3j....]499cbc0a@svctag-j7w3v3j....[/email]
> Estimados amigos, saludos.
>
> Pues otra vez dando molestias.
>
> Ya casi termino un proyecto usando mysql, pero me encontre un detalle.
>
> ¿ Como puedo hacer para que al momento de abrir un formulario desde el
> formulario principal no se tarde en volver hacer la conexion con el
> servidor ?
>
> ESTO LO HAGO EN UNA RED LOCAL
> Logicamente que en el pc que funciona como servidor no se tarda tanto
>
> Trataré de explicar mi necesidad.
>
> Tengo un formulario principal en el cual está el menu de todo el sistema,
> desde ahi abro un formulario que se llama clientes
> logicamente en este formulario llamado clientes hago la conexion con
> mysql.
>
> cDatabase=Mi_Base
> cHost=La IP del servidor (192.168.1.x)
> cPassword=Mi password
> cUser=root
>
> Y pues la verdad se tarda como 4 o más segundos al abrir el formulario.
>
> Asi mismo tengo mas formularios y hago lo mismo en cada uno
> cDatabase=Mi_Base
> cHost=La IP del servidor (192.168.1.x)
> cPassword=Mi password
> cUser=root
>
>
> ¿ Hay alguna forma de que desde el menu principal haga la conexion y que
> en los formularios ya no tenga que estar haciendo esto?
>
> De antemano mil gracias
>
>
>
>
>
A mi me enseñaron en el grupo y hago esto
creo la conexion al iniciar y la asigno a un AppData, desde ahi esta
disponible en todos los formularios. Yo conecto y desconecto a volutad. Pero
si vos queres lo dejas siempre conectado y listo.
En el menu:
CLASS TFormMenu FROM TForm
// Parametros de la base de datos
COMPONENT oBasedeDatos
AppData:AddData("cHost")
AppData:AddData("cUser")
AppData:AddData("cPassword")
AppData:AddData("cDatabase")
AppData:AddData("ConexionesActivas", 0 )
ENDCLASS
METHOD FormInitialize( oSender ) CLASS TFormMenu
// Acceso a la base de datos. Tengo los datos en un DBF
Use Conexion New Exclusive Alias Conec
AppData:cHost := Alltrim(Conec->DIRECIP)
AppData:cUser := Alltrim(Conec->USUARIO)
AppData:cPassWord := "contrasena"
AppData:cDataBase := Alltrim(Conec->BASE)
Conec->( dbCloseArea() )
WITH OBJECT ::oBasedeDatos := TMySQLDataSource():New()
:cDataBase := AppData:cDataBase
:cHost := AppData:cHost
:cPassword := AppData:cPassWord
:cUser := AppData:cUser
:nPort := 3306
:nTimeOut := 1000
:lConnected := .F. // si no queres estar conectado
:lDisplayErrors := .T.
:Create()
END
AppData:AddData("oBase", ::oBasedeDatos )
// Fin de creacion de base de datos
Luego en todos los formularios
AppData:oBase:lConnected := .T. // conectar
AppData:oBase:Execute( "Select alias from usuarios order by alias",,@aData)
AppData:oBase:lConnected := .F. // desconectar
Si estas siempre conectado obvia los lConnected
Espero te sirva
Juan
"PEDRO DE LEON RODAS" <7773613810@prodigy.net.mx> escribió en el mensaje
news:[email=499cbc0a@svctag-j7w3v3j....]499cbc0a@svctag-j7w3v3j....[/email]
> Estimados amigos, saludos.
>
> Pues otra vez dando molestias.
>
> Ya casi termino un proyecto usando mysql, pero me encontre un detalle.
>
> ¿ Como puedo hacer para que al momento de abrir un formulario desde el
> formulario principal no se tarde en volver hacer la conexion con el
> servidor ?
>
> ESTO LO HAGO EN UNA RED LOCAL
> Logicamente que en el pc que funciona como servidor no se tarda tanto
>
> Trataré de explicar mi necesidad.
>
> Tengo un formulario principal en el cual está el menu de todo el sistema,
> desde ahi abro un formulario que se llama clientes
> logicamente en este formulario llamado clientes hago la conexion con
> mysql.
>
> cDatabase=Mi_Base
> cHost=La IP del servidor (192.168.1.x)
> cPassword=Mi password
> cUser=root
>
> Y pues la verdad se tarda como 4 o más segundos al abrir el formulario.
>
> Asi mismo tengo mas formularios y hago lo mismo en cada uno
> cDatabase=Mi_Base
> cHost=La IP del servidor (192.168.1.x)
> cPassword=Mi password
> cUser=root
>
>
> ¿ Hay alguna forma de que desde el menu principal haga la conexion y que
> en los formularios ya no tenga que estar haciendo esto?
>
> De antemano mil gracias
>
>
>
>
>
-
- Mensajes: 180
- Registrado: Lun Sep 15, 2008 2:53 pm
Como hacer la conexion mas rapida con mysql
Pedro
A mi me enseñaron en el grupo y hago esto
creo la conexion al iniciar y la asigno a un AppData, desde ahi esta
disponible en todos los formularios. Yo conecto y desconecto a volutad. Pero
si vos queres lo dejas siempre conectado y listo.
En el menu:
CLASS TFormMenu FROM TForm
// Parametros de la base de datos
COMPONENT oBasedeDatos
AppData:AddData("cHost")
AppData:AddData("cUser")
AppData:AddData("cPassword")
AppData:AddData("cDatabase")
AppData:AddData("ConexionesActivas", 0 )
ENDCLASS
METHOD FormInitialize( oSender ) CLASS TFormMenu
// Acceso a la base de datos. Tengo los datos en un DBF
Use Conexion New Exclusive Alias Conec
AppData:cHost := Alltrim(Conec->DIRECIP)
AppData:cUser := Alltrim(Conec->USUARIO)
AppData:cPassWord := "contrasena"
AppData:cDataBase := Alltrim(Conec->BASE)
Conec->( dbCloseArea() )
WITH OBJECT ::oBasedeDatos := TMySQLDataSource():New()
:cDataBase := AppData:cDataBase
:cHost := AppData:cHost
:cPassword := AppData:cPassWord
:cUser := AppData:cUser
:nPort := 3306
:nTimeOut := 1000
:lConnected := .F. // si no queres estar conectado
:lDisplayErrors := .T.
:Create()
END
AppData:AddData("oBase", ::oBasedeDatos )
// Fin de creacion de base de datos
Luego en todos los formularios
AppData:oBase:lConnected := .T. // conectar
AppData:oBase:Execute( "Select alias from usuarios order by alias",,@aData)
AppData:oBase:lConnected := .F. // desconectar
Si estas siempre conectado obvia los lConnected
Espero te sirva
Juan
"PEDRO DE LEON RODAS" <7773613810@prodigy.net.mx> escribió en el mensaje
news:[email=499cbc0a@svctag-j7w3v3j....]499cbc0a@svctag-j7w3v3j....[/email]
> Estimados amigos, saludos.
>
> Pues otra vez dando molestias.
>
> Ya casi termino un proyecto usando mysql, pero me encontre un detalle.
>
> ¿ Como puedo hacer para que al momento de abrir un formulario desde el
> formulario principal no se tarde en volver hacer la conexion con el
> servidor ?
>
> ESTO LO HAGO EN UNA RED LOCAL
> Logicamente que en el pc que funciona como servidor no se tarda tanto
>
> Trataré de explicar mi necesidad.
>
> Tengo un formulario principal en el cual está el menu de todo el sistema,
> desde ahi abro un formulario que se llama clientes
> logicamente en este formulario llamado clientes hago la conexion con
> mysql.
>
> cDatabase=Mi_Base
> cHost=La IP del servidor (192.168.1.x)
> cPassword=Mi password
> cUser=root
>
> Y pues la verdad se tarda como 4 o más segundos al abrir el formulario.
>
> Asi mismo tengo mas formularios y hago lo mismo en cada uno
> cDatabase=Mi_Base
> cHost=La IP del servidor (192.168.1.x)
> cPassword=Mi password
> cUser=root
>
>
> ¿ Hay alguna forma de que desde el menu principal haga la conexion y que
> en los formularios ya no tenga que estar haciendo esto?
>
> De antemano mil gracias
>
>
>
>
>
A mi me enseñaron en el grupo y hago esto
creo la conexion al iniciar y la asigno a un AppData, desde ahi esta
disponible en todos los formularios. Yo conecto y desconecto a volutad. Pero
si vos queres lo dejas siempre conectado y listo.
En el menu:
CLASS TFormMenu FROM TForm
// Parametros de la base de datos
COMPONENT oBasedeDatos
AppData:AddData("cHost")
AppData:AddData("cUser")
AppData:AddData("cPassword")
AppData:AddData("cDatabase")
AppData:AddData("ConexionesActivas", 0 )
ENDCLASS
METHOD FormInitialize( oSender ) CLASS TFormMenu
// Acceso a la base de datos. Tengo los datos en un DBF
Use Conexion New Exclusive Alias Conec
AppData:cHost := Alltrim(Conec->DIRECIP)
AppData:cUser := Alltrim(Conec->USUARIO)
AppData:cPassWord := "contrasena"
AppData:cDataBase := Alltrim(Conec->BASE)
Conec->( dbCloseArea() )
WITH OBJECT ::oBasedeDatos := TMySQLDataSource():New()
:cDataBase := AppData:cDataBase
:cHost := AppData:cHost
:cPassword := AppData:cPassWord
:cUser := AppData:cUser
:nPort := 3306
:nTimeOut := 1000
:lConnected := .F. // si no queres estar conectado
:lDisplayErrors := .T.
:Create()
END
AppData:AddData("oBase", ::oBasedeDatos )
// Fin de creacion de base de datos
Luego en todos los formularios
AppData:oBase:lConnected := .T. // conectar
AppData:oBase:Execute( "Select alias from usuarios order by alias",,@aData)
AppData:oBase:lConnected := .F. // desconectar
Si estas siempre conectado obvia los lConnected
Espero te sirva
Juan
"PEDRO DE LEON RODAS" <7773613810@prodigy.net.mx> escribió en el mensaje
news:[email=499cbc0a@svctag-j7w3v3j....]499cbc0a@svctag-j7w3v3j....[/email]
> Estimados amigos, saludos.
>
> Pues otra vez dando molestias.
>
> Ya casi termino un proyecto usando mysql, pero me encontre un detalle.
>
> ¿ Como puedo hacer para que al momento de abrir un formulario desde el
> formulario principal no se tarde en volver hacer la conexion con el
> servidor ?
>
> ESTO LO HAGO EN UNA RED LOCAL
> Logicamente que en el pc que funciona como servidor no se tarda tanto
>
> Trataré de explicar mi necesidad.
>
> Tengo un formulario principal en el cual está el menu de todo el sistema,
> desde ahi abro un formulario que se llama clientes
> logicamente en este formulario llamado clientes hago la conexion con
> mysql.
>
> cDatabase=Mi_Base
> cHost=La IP del servidor (192.168.1.x)
> cPassword=Mi password
> cUser=root
>
> Y pues la verdad se tarda como 4 o más segundos al abrir el formulario.
>
> Asi mismo tengo mas formularios y hago lo mismo en cada uno
> cDatabase=Mi_Base
> cHost=La IP del servidor (192.168.1.x)
> cPassword=Mi password
> cUser=root
>
>
> ¿ Hay alguna forma de que desde el menu principal haga la conexion y que
> en los formularios ya no tenga que estar haciendo esto?
>
> De antemano mil gracias
>
>
>
>
>
-
- Mensajes: 56
- Registrado: Jue Ene 08, 2009 5:40 pm
Como hacer la conexion mas rapida con mysql
Te explico como me enseñaron a mi.
En el modulo principal donde se encuentra el procedure Main, create otro
procedimiento llamado Iniciar, y alli preparas los parametros de
Applicacion, yo lo trabajo con un archivo ini, de tal manera que cuando voy
a colocar mi aplicacion a un cliente, solo cambio los parametros del ini y
ya no toco para nada el ejecutable.Ademas coloco un formulario login, para
convalidar el ingreso, un detalle, para cambiar el direccionamiento al
modulo Iniciar, tienes que hacerlos desde Propiedades del Proyecto, en el
modulo principal.
Te mando mi modulo principal para que tengas una idea.
#include "Xailer.ch"
Procedure Main()
Application:cTitle := "Prueba"
Application:oIcon := "Demo"
Iniciar()
Application:Run()
Return
Procedure Iniciar()
Local cData, cUser , cHost , cPass, lEntra
SET DATE TO BRITISH
SET EPOCH TO 1950
APPLICATION:lUseReturn := .T.
AppData:AddData("oDataSource",TMySQLDataSource():Create())
AppData:AddData("oDataSet1",TSQLTable():Create())
AppData:AddData("oDataSet2",TSQLQuery():Create())
IF File(".prueba.ini")
WITH OBJECT TIni():New( ".prueba.ini" )
cData := :GetEntry( "MYSQL", "Database", "")
cUser := :GetEntry( "MYSQL", "Usuario", "" )
cHost := :GetEntry( "MYSQL", "Host", "" )
cPass := :GetEntry( "MYSQL", "Password", "" )
END
WITH OBJECT AppData:oDataSource
:cDatabase := cData
:cHost := cHost
:cUser := cUser
:cPassword := cPass
:lConnected := .T.
END WITH
WITH OBJECT frm_login()
:New()
:RequestState()
if :ShowModal()== mrOK
lEntra := .T.
endif
:End()
END WITH
IF lEntra
frm_principal():New( Application ):Show()
ENDIF
ELSE
msgalert("No tiene los parametros para la conexion" + chr(13) + "a la
base de datos!!!","Error de Conexión")
END
Return
Exit Procedure LiberaDatasets
AppData:oDataSource:Disconnect()
Return
/** No valido nada, porque este es una prueba, tu realiza las validaciones.
de conexion. **/
FG
En el modulo principal donde se encuentra el procedure Main, create otro
procedimiento llamado Iniciar, y alli preparas los parametros de
Applicacion, yo lo trabajo con un archivo ini, de tal manera que cuando voy
a colocar mi aplicacion a un cliente, solo cambio los parametros del ini y
ya no toco para nada el ejecutable.Ademas coloco un formulario login, para
convalidar el ingreso, un detalle, para cambiar el direccionamiento al
modulo Iniciar, tienes que hacerlos desde Propiedades del Proyecto, en el
modulo principal.
Te mando mi modulo principal para que tengas una idea.
#include "Xailer.ch"
Procedure Main()
Application:cTitle := "Prueba"
Application:oIcon := "Demo"
Iniciar()
Application:Run()
Return
Procedure Iniciar()
Local cData, cUser , cHost , cPass, lEntra
SET DATE TO BRITISH
SET EPOCH TO 1950
APPLICATION:lUseReturn := .T.
AppData:AddData("oDataSource",TMySQLDataSource():Create())
AppData:AddData("oDataSet1",TSQLTable():Create())
AppData:AddData("oDataSet2",TSQLQuery():Create())
IF File(".prueba.ini")
WITH OBJECT TIni():New( ".prueba.ini" )
cData := :GetEntry( "MYSQL", "Database", "")
cUser := :GetEntry( "MYSQL", "Usuario", "" )
cHost := :GetEntry( "MYSQL", "Host", "" )
cPass := :GetEntry( "MYSQL", "Password", "" )
END
WITH OBJECT AppData:oDataSource
:cDatabase := cData
:cHost := cHost
:cUser := cUser
:cPassword := cPass
:lConnected := .T.
END WITH
WITH OBJECT frm_login()
:New()
:RequestState()
if :ShowModal()== mrOK
lEntra := .T.
endif
:End()
END WITH
IF lEntra
frm_principal():New( Application ):Show()
ENDIF
ELSE
msgalert("No tiene los parametros para la conexion" + chr(13) + "a la
base de datos!!!","Error de Conexión")
END
Return
Exit Procedure LiberaDatasets
AppData:oDataSource:Disconnect()
Return
/** No valido nada, porque este es una prueba, tu realiza las validaciones.
de conexion. **/
FG