Adjunto el codigo VBA. Para que el siguiente codigo funcione teneis que instalar el “client access V6.1” que instala el driver ODBC. Luego configurar la conexión ODBC en AS400. Crear un archivo .reg con los siguientes para configurar el driver de forma automatica : debeis indicar el ip del sistema y el nombre de libreria. Una vez creado el archivo .reg guardarlo y ejecutarlo. Crea una conexion ODBC a AS400 llamada AS400READ
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREWow6432NodeODBCODBC.INIAS400READ]
“Driver”=”C:\Windows\SysWOW64\cwbodbc.dll”
“Description”=””
“System”=”<ip del sistema>”
“Signon”=”0”
“UserID”=”GD17”
“SSL”=”2”
“SQLConnectPromptMode”=”1”
“Naming”=”0”
“CommitMode”=”0”
“DefaultLibraries”=”<nombre libreria>”
“Database”=””
“ConnectionType”=”0”
“AllowProcCalls”=”0”
“DateFormat”=”5”
“DateSeparator”=”1”
“TimeFormat”=”0”
“TimeSeparator”=”0”
“Decimal”=”0”
“MaximumDecimalPrecision”=”31”
“MaximumDecimalScale”=”31”
“MinimumDivideScale”=”0”
“ConvertDateTimeToChar”=”0”
“Graphic”=”0”
“DecFloatRoundMode”=”0”
“MapDecimalFloatDescribe”=”1”
“ExtendedDynamic”=”1”
“DefaultPkgLibrary”=”<nombre libreria>”
“DefaultPackage”=”<nombre libreria>/DEFAULT(IBM),2,0,1,0,512”
“LazyClose”=”1”
“PreFetch”=”0”
“AllowDataCompression”=”0”
“Concurrency”=”0”
“ExtendedColInfo”=”0”
“QueryTimeout”=”1”
“BlockSizeKB”=”512”
“MaxFieldLength”=”32”
“BlockFetch”=”1”
“CursorSensitivity”=”0”
“QueryOptimizeGoal”=”0”
“QueryStorageLimit”=”-1″
“TrueAutoCommit”=”0”
“SortSequence”=”0”
“SortTable”=””
“SortWeight”=”0”
“LanguageID”=”ENU”
“LibraryView”=”0”
“ODBCRemarks”=”0”
“SearchPattern”=”1”
“CatalogOptions”=”3”
“DelimitNames”=”0”
“ForceTranslation”=”1”
“TranslationDLL”=””
“TranslationOption”=”0”
“CCSID”=”0”
“AllowUnsupportedChar”=”0”
“UnicodeSQL”=”0”
“HexParserOpt”=”0”
“Trace”=”0”
“QAQQINILibrary”=””
“SQDiagCode”=””
“PackageLOCAL DATA”=”<nombre libreria>/LOCAL_D(FBA),2,0,1,0,512”
“PackageMSACCESS”=”<nombre libreria>/MSACCES(FBA),2,0,1,0,512”
“PackageEXCEL”=”<nombre libreria>/EXCEL(FBA),2,0,1,0,512”
[HKEY_LOCAL_MACHINESOFTWAREWow6432NodeODBCODBC Data Sources]
“AS400READ”=”iSeries Access ODBC Driver”
Adjunto la Funcion que vincula la una tabla de AS400 – JDE a Access
Public Function CreateLinkTables()
Dim Mytdf As TableDef, MyLocal As String, MySource As String, MyConnectStr As String
MySource = nTable
MyLocal = nTable
MyConnectStr = “ODBC;DSN=AS400READ;DESC=iSeries Access ODBC Driver;System=<la ip del sistema AS400>;UserID=<vuestro usuario>;PASSWORD=<vuestra contraseña>;”
MySource = “<nombre de la tabla que necesitamos vincular>”
‘Crea la tabla ODBC
‘Repite para todas las tablas
GoSub MakeItNow
Exit Function
MakeItNow:
Set Mytdf = CurrentDb.CreateTableDef(MyLocal)
Mytdf.connect = MyConnectStr
Mytdf.SourceTableName = MySource
CurrentDb.TableDefs.Append Mytdf
Return
End Function
Articulo original :
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREWow6432NodeODBCODBC.INIAS400READ]
“Driver”=”C:\Windows\SysWOW64\cwbodbc.dll”
“Description”=””
“System”=”<ip del sistema>”
“Signon”=”0”
“UserID”=”GD17”
“SSL”=”2”
“SQLConnectPromptMode”=”1”
“Naming”=”0”
“CommitMode”=”0”
“DefaultLibraries”=”<nombre libreria>”
“Database”=””
“ConnectionType”=”0”
“AllowProcCalls”=”0”
“DateFormat”=”5”
“DateSeparator”=”1”
“TimeFormat”=”0”
“TimeSeparator”=”0”
“Decimal”=”0”
“MaximumDecimalPrecision”=”31”
“MaximumDecimalScale”=”31”
“MinimumDivideScale”=”0”
“ConvertDateTimeToChar”=”0”
“Graphic”=”0”
“DecFloatRoundMode”=”0”
“MapDecimalFloatDescribe”=”1”
“ExtendedDynamic”=”1”
“DefaultPkgLibrary”=”<nombre libreria>”
“DefaultPackage”=”<nombre libreria>/DEFAULT(IBM),2,0,1,0,512”
“LazyClose”=”1”
“PreFetch”=”0”
“AllowDataCompression”=”0”
“Concurrency”=”0”
“ExtendedColInfo”=”0”
“QueryTimeout”=”1”
“BlockSizeKB”=”512”
“MaxFieldLength”=”32”
“BlockFetch”=”1”
“CursorSensitivity”=”0”
“QueryOptimizeGoal”=”0”
“QueryStorageLimit”=”-1″
“TrueAutoCommit”=”0”
“SortSequence”=”0”
“SortTable”=””
“SortWeight”=”0”
“LanguageID”=”ENU”
“LibraryView”=”0”
“ODBCRemarks”=”0”
“SearchPattern”=”1”
“CatalogOptions”=”3”
“DelimitNames”=”0”
“ForceTranslation”=”1”
“TranslationDLL”=””
“TranslationOption”=”0”
“CCSID”=”0”
“AllowUnsupportedChar”=”0”
“UnicodeSQL”=”0”
“HexParserOpt”=”0”
“Trace”=”0”
“QAQQINILibrary”=””
“SQDiagCode”=””
“PackageLOCAL DATA”=”<nombre libreria>/LOCAL_D(FBA),2,0,1,0,512”
“PackageMSACCESS”=”<nombre libreria>/MSACCES(FBA),2,0,1,0,512”
“PackageEXCEL”=”<nombre libreria>/EXCEL(FBA),2,0,1,0,512”
[HKEY_LOCAL_MACHINESOFTWAREWow6432NodeODBCODBC Data Sources]
“AS400READ”=”iSeries Access ODBC Driver”
Adjunto la Funcion que vincula la una tabla de AS400 – JDE a Access
Public Function CreateLinkTables()
Dim Mytdf As TableDef, MyLocal As String, MySource As String, MyConnectStr As String
MySource = nTable
MyLocal = nTable
MyConnectStr = “ODBC;DSN=AS400READ;DESC=iSeries Access ODBC Driver;System=<la ip del sistema AS400>;UserID=<vuestro usuario>;PASSWORD=<vuestra contraseña>;”
MySource = “<nombre de la tabla que necesitamos vincular>”
‘Crea la tabla ODBC
‘Repite para todas las tablas
GoSub MakeItNow
Exit Function
MakeItNow:
Set Mytdf = CurrentDb.CreateTableDef(MyLocal)
Mytdf.connect = MyConnectStr
Mytdf.SourceTableName = MySource
CurrentDb.TableDefs.Append Mytdf
Return
End Function
Articulo original :