gx-l | | | |
Leonardo Zepeda | |
Hola Carlos
Consulta, estos diferentes datastore, estan asociados a sus respectivos Data View y sus respectivas transacciones, en el caso de ser asi, deberias definir en la preferences del DataStore en :
Connect using = Driver
Drive name = SQL SERVER
Asi no necesitas definir varios ODBC
Y no deberias tener problemas para trabajar con distintas Bases.
En el caso de no ser asi, verifica los ejemplos que aparecen en Developer Library o envia ejemplos de la forma en que lo realizas, para asi poder ayudarte mejor
Esperando te sirva
Leonardo Zepeda A.
> Hola Foro:
>
> Necesito de manera urgente
> información y consejos sobre el manejo de tipo de datos DBCONNECTION,
> he consultado la ayuda de Genexus pero no he logrado hacer que
> funcione mi aplicación, les comento, cree varios DATASTORE apuntando a
> varias B.Datos.
> SQL que contienen una tabla de igual
> definición, cree varios ODBC con acceso a estas B.Datos, mi idea es
> que a traves de un dato definido como DBCONNECTION pueda conectar y/o
> desconectar a las distintas B. de Datos y esto es lo que no consigo.
>
> Gracias anticipadas y un saludo:
>
> Carlos Jose
> -----------------------------------------
> Para Suscribirse/Desuscribirse:
> http://www.gxtechnical.com/cgi-
> bin/hforum.exe?2,3,30,1
Por consultas
> owner-gx-l@gxtech.com.uy
--
http://www.esfera.cl
-----------------------------------------
Para Suscribirse/Desuscribirse:
http://www.gxtechnical.com/cgi-bin/hforum.exe?2,3,30,1
Por consultas owner-gx-l@gxtech.com.uy |
|
|
Leonardo Zepeda | |
Hola
En relación a la Transacción DATOS, debe hacer
2(Dos)Ej.:
Transacción : EMP1DATOS
Emp1CODDAT *
Emp1DESDAT
Transacción : EMP2DATOS
Emp2CODDAT *
Emp2DESDAT
Genexus genera 2 Tablas, para el ejemplo la denominamos EMP1DATOS y EMP2DATOS
Data View
Empresa1 = Data View
Assoc. Table : EMP1DATOS
Composition
Atributo Original Otributo Genexus
CODDAT Emp1CODDAT
DESDAT Emp1DESDAT
Terminas de ingresar el Data Store, indices y Platform. y repites la operación con la otra tabla.
Con esto puedes leer las dos tablas sin ningun problema.
Ahora, asumo que la dos bases de Datos contienen tablas generadas con Genexus, en el caso de no ser asi deberias hacer tantas transacciones y data view como tablas tengas.
Continuo asumiendo que las tablas fueron generadas con Genexus. Te recomiendo que de www.genexus.com, bajes la developer library para ver las definiciones, ahora viendo la información encontre el siguiente ejemplo
Ejemplo Genexus
&MyConnection = GetDatastore("default")
&MyConnection.Disconnect()
&MyConnection.UserName = "Administrador"
&MyConnection.Password = "Adm!Password"
&MyConnection.ConnectionData = "EMP1"
&MyConnection.ShowPrompt = 2
&MyConnection.Connect()
Consideraciones generales
· Solo esta implementado cuando se
utiliza tecnología de acceso a datos ODBC (para el caso del generador C/SQL, la preferencia “C/SQL Access Method” deberá tener dicho valor).
Esperando te sirva
Leonardo Zepeda A.
· Se debe tener en cuenta que los métodos
Connect()/Disconnect() cierran los cursores que estén abiertos en la conexión a la que aplican.
Por lo anterior, no es posible ejecutar los métodos Connect() y/o Disconnect() dentro del alcance de un comando For each.
Es responsabilidad del desarrollador utilizar la
conexión/desconexión en lugares correctos. Por
ej. si se realiza la desconexión en la mitad de
un procedimiento, probablemente la ejecución
cancelará. También existe la posibilidad de que
continúe trabajando si el procedimiento se
reconecta, pero en todo caso los resultados son
impredecibles
> Hola Foro:
>
> Gracias Leonardo por atenderme, he
> seguido tus indicaciones pero no he
> logrado hacer lo que pretendo ( estoy un
> poco verde en este tema ), te comento lo
> que quiero hacer y lo que he diseñado:
>
> Tengo lo siguiente:
>
> - Una sola transacción denominada
> DATOS con los siguientes campos:
>
> CODDAT * --------->
> Codigo Dato. DESDAT ----
> -----> Descripción del Dato.
>
> - Dos Data View.
>
> DATOUNO --------> que
> apunta a un DATA STORE denominado
> ENLACEUNO que accede a un B.Datos denominada
>
> EMP1 ubicada en un servidor SQL.
>
> DATODOS --------> que
> apunta a un DATA STORE denominado
> ENLACEDOS que accede a una B. Datos denominada
>
> EMP2 ubicada en un servidor SQL.
>
> - Un Work Panel.
>
> Que va a ser el programa
> principal en donde pretendo que un
> usuario se identifique y dependiendo que
> usuario entre se conecte a una B. Datos
> u otra.
>
> Preguntas:
>
> - Tengo que configurar de
> alguna manera especial los DATA VIEW,
> aparte de indicarle que DATA STORE
> tengo que utilizar, ¿ tengo que indicar
> a que B. de Datos conecta en los DATA
> VIEW?, ó si al haber definido el DATA
> STORE para que apunte a una B. de datos
> ¿ esto ya no es necesario?. -
> Es necesario crear una transación ( que
> serian iguales ) por cada B. de datos a
> la que se intenta acceder ( teniendo en
> cuenta que estas B.Datos tienen definida
> la misma tabla), es decir aprovechar
> esta única transación para las 2 B. de Datos.
>
> Un saludo y de nuevo gracias anticipadas.
>
> Carlos Jose.
> -----------------------------------------
> Para Suscribirse/Desuscribirse:
> http://www.gxtechnical.com/cgi-
> bin/hforum.exe?2,3,30,1
Por consultas
> owner-gx-l@gxtech.com.uy
--
http://www.esfera.cl
-----------------------------------------
Para Suscribirse/Desuscribirse:
http://www.gxtechnical.com/cgi-bin/hforum.exe?2,3,30,1
Por consultas owner-gx-l@gxtech.com.uy |
|
|
Leonardo Zepeda | |
Hola Carlos
Que te parece hacer lo sgte., creas un archivo txt con las empresas que utilizan el sistema de la sgte. forma
Usuario Clave Empresa Base de Datos User Id User Password
Creas Un Workpanel
Entrada = Workpanel
Usuario :_________
Clave :_________
Event 'Enter'
Haces la validacion para rescatar los datos de
Base de Datos,Empresas etc
del archivo texto y si son correctos
Aplicas DBCONNECTION
&MyConnection.Connect()
y haces un
call al Worpanel Principal, donde validas al
usuario y das
los privilegios de las opciones del Sistema
EndEvent
Event 'Exit'
&MyConnection.DisConnect()
EndEvent
Importante No defines data view, data store, Odbc
(en caso de usar Connect using =Driver) , solo
este archivo texto
en la que vas agregando empresas en la medida
que aparezcan.
Nota : El usuario y clave del archivo texto, es
una por empresa.
Nota2: Dentro de la Propiedades del modelo
en Dbms Option, defines los datos de una base de
datos y utilizar Connect using =Driver, por
ejemplo.
Esperando te Sirva
Leonardo Zepeda A.
> Hola Leonardo:
>
> Gracias de nuevo, el ejemplo de la
> Developer Library ya lo habia visto, de
> todas las maneras gracias por habermelo
> remitido, "creo" que el tipo de datos
> DBCONNECTION no me va a servir para lo
> que yo quiero desarrollar ( como ya te
> he comentado estoy un poco verde en el
> tema y no se si he enfocado bien el
> mismo) por ello te paso a comentar un
> poco lo que quiero realizar y determinar
> si tengo que utilizar este tipo de datos
> o no. Lo que pretendo es instalar una
> unica aplicación en TERMINAL SERVER ( el
> programa es el mismo para todas las
> empresas) y lo que quiero es que en el
> momento de la conexión determine a que
> Base de Datos se tiene que conectar en
> función de la empresa que acceda a la
> aplicación ( Nota: Cada empresa que se
> conecta levanta una instancia de la
> aplicación ), de hay que necesite
> cambiar el acceso de una B. de datos a
> otra dependiendo de quien se conecte.
> Un saludo y de nuevo gracias anticipadas.
>
> Carlos Jose.
> -----------------------------------------
> Para Suscribirse/Desuscribirse:
> http://www.gxtechnical.com/cgi-
> bin/hforum.exe?2,3,30,1
Por consultas
> owner-gx-l@gxtech.com.uy
--
http://www.esfera.cl
-----------------------------------------
Para Suscribirse/Desuscribirse:
http://www.gxtechnical.com/cgi-bin/hforum.exe?2,3,30,1
Por consultas owner-gx-l@gxtech.com.uy |
|
|
Leonardo Zepeda | |
Hola Carlos
Que bueno que te haya resultado, pero si utilizas "Conect using" = Driver, no necesitas crear n Data Sourcer (ODBC), porque al estar driver del Sql en el Servidor en tu caso es suficiente.
Chaooo
Leonardo Zepeda Arce.
> Hola Leonardo:
>
> Otra vez gracias, por fin he logrado lo que pretendia, te comento
> como:
>
> En el DBMS de la aplicación, en el apartado "Conect using"
> puse Driver, y en el apartado "Driver name" puse SQL
> server. Al final he creado tantos
> ODBC como empresas voy a manejar, y
> utilizo un Work Panel que va a ser el
> encargado de controlar la
> conexión a las distintas B. de Datos, y hay utilizo DBCONNECTION para
> realizar el enlace:
>
> &CONEXION.Disconnect()
> &CONEXION=GETDATASTORE("DEFAULT")
>
> &CONEXION.ODBCDatasourceName="EMP1"
> Nota: aqui indico el nombre del ODBC que
> corresponda.
> &CONEXION.ShowPrompt=2
> &CONEXION.Connect()
>
> Un saludo y gracias.
>
> Carlos Jose.
> -----------------------------------------
> Para Suscribirse/Desuscribirse:
> http://www.gxtechnical.com/cgi-
> bin/hforum.exe?2,3,30,1
Por consultas
> owner-gx-l@gxtech.com.uy
--
http://www.esfera.cl
-----------------------------------------
Para Suscribirse/Desuscribirse:
http://www.gxtechnical.com/cgi-bin/hforum.exe?2,3,30,1
Por consultas owner-gx-l@gxtech.com.uy |
|
|
BARRIOS JAVIER - GRU | |
Foro:
Alguien pudiera darme una manita con DBConnection.
He estado tratando de hacer que mi aplicación acceda a 2 bases de datos identicas en estructura, pero que pertenecen a dos empresas distintas.
Tengo un progama MAIN que accede a una tabla de empresas, donde un atributo tiene el nombre del DATA STORE que le corresponde a la empresa seleccionada.
Tengo otro MAIN, que es la aplicación principal la cual recibe como parametro una variable con el nombre del DATA STORE
En el evento START de este MAIN, ejecuto la siguiente secuencia de comandos:
&DBConection=GetDataStore(&EmcODBC) //&EmcODBC es la variable que trae el nombre del DATASTORE
&DBConection.UserName='sa'
&DBConection.UserPassword=''
&DBConection.ShowPrompt=2
&DBConection.Connect()
&ODBCError=&DBConection.ErrCode
if &ODBCError<>0
&msg='Error al abrir la Base de Datos'+chr(10)+'ErrCode: '+str(&ODBCError,4)+chr(10)
&msg=&msg+'ErrorDescription: '+&DBConection.ErrDescription
msg(&msg)
Return
Endif
De acuerdo a lo leido esto bastaría para que de aqui en adelante se utilizara la base de datos correspondiente a la empresa seleccionada.
Pero no es asi siempre se utiliza la base de datos que está por default y no marca ningun error.
Alguien podría decirme en que estoy equivocado?
Tengo definidos 3 DATA Stores, cada una apunta a 3 DATA SOURCES Distintos.
Hay definidos tres data sources, que son asignados a tres bases de datos identicas en estructura, pero con información relativa a cada empresa.
Desarrollo con:
Genexus 7.5-VB-SQL Server
Windows XP Profesional
Gracias por la ayuda que puedan prestarme
Emilio Javier Barrios Sosa
Grupo JBSistemas, S.A. de C.V.
5 de Mayo #971 2o. Piso
Centro
91700 Veracruz, Ver.
Tels. (229) 938-8765, 938-8767
|
|
|
Leandro Minatel45751 | |
Hola Diego, en este caso se complica un poco el tema con los DDM. Hay
8 AS/400, uno por cada planta, por lo tanto, tengo que crear un juego
de DDMs por cada uno de ellos y ponerlos en diferentes bibliotecas.
Gracias!
2008/10/29 Diego Kesselman :
> Probaste creando DDMs en un equipo al que siempre te conectas y desde ahí
> acceder a los datos de cada servidor?
>
> 2008/10/28 Leandro Minatel
>>
>> Edgar, si, me paso ese mismo dato Francisco de Toolnology, creo que la
>> cosa viene por ahi.
>>
>> Voy a hecharle una mirada a ver que onda.
>>
>> Saludos y gracias!
>>
>> On Tue, Oct 28, 2008 at 4:35 PM, Edgar Jimenez
>> |
|
|
|
|
Back to gx-l |
|