'Kan någon hjälpa mig med en automatisk koppling till access db via DSN. Finns det ingen som vet hur man skapar en ODBC koppling via kod i vb6? http://www.pellesoft.se/area/articles/article.aspx?artid=611 Inte riktigt vad jag tänkte, utan jag vill skapa en ODBC/DSN se koden ovan den skapar nästan en fungerande det är d-word som inte går. Testa detta med constanten. Som det står nu är DWORD typ VB Integer dvs Word Nej tyvärr, får Ogitigt DWORD-Värde Oki på det då får du testa att skriva så här. Det ändrade registernyckel typ från DWORD till 0x80000004 mmm.... det är ju 8:an som blir fel skulle vara så här C standard Den här raden är ju också fel. skall inte stå Private Const HKEY_LOCAL_MACHINE = &H80000002 Det var ju själva fae.... också. Men Ok det kan ju vara värdena 2 resp 4 han inte gillar Testa att använda denna Function istället.Jag skall testa att bygga om som du vill ha det. Djä... soppa det här men du får inte ge dig Tack, jag löste det genom att hitta ett annat tipps som använde ODBCCP32.DLL skall lägga ut det på artiklar när jag är klar. Tusen tack Sven Åke.Skapa ODBC koppling med kod /vb6?
'Får inte till DWORD bla..
Private Const KEY_QUERY_VALUE = &H1
Private Const ERROR_SUCCESS = 0&
Private Const REG_SZ = 1
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const REG_DWORD = 4
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueExString Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpValue As String, ByVal cbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegSetValueExLong Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpValue As Long, ByVal cbData As Long) As Long
Public Function CreateLagerkollDSN(szWantedDSN As String, dbPathvalue As String, sDBPassword As String) As Boolean
Dim sSystemfolder As String
Dim hKey As Long 'Av per
Dim szKeyPath As String
Dim szKeyName As String
Dim szKeyValue As String
Dim sSourceType As String
Dim lKeyValue As Long
Dim lRes As Long
Dim lSize As Long
Dim szEmpty As String
szEmpty = Chr(0)
'Get Systemfolder
Dim nRet As Integer, Temp As String * 260
nRet = GetWindowsDirectory(Temp, 260)
sSystemfolder = Left(Temp, nRet)
'********************
lSize = 4
lRes = RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\ODBC\ODBC.INI\" & szWantedDSN, hKey)
If lRes <> ERROR_SUCCESS Then
Exit Function
End If
'*****************************************************************************
'DB Path
szKeyValue = dbPathvalue '"C:\Program\Mapp\Databas.mdb"
lRes = RegSetValueExString(hKey, "DBQ", 0&, REG_SZ, _
szKeyValue, Len(szKeyValue))
'Beskrivning
szKeyValue = "Min db koppling" '"C:\Program\SPCS\SPCS Administration\Ovnbol"
lRes = RegSetValueExString(hKey, "Description", 0&, REG_SZ, _
szKeyValue, Len(szKeyValue))
'Driver
szKeyValue = "C:\WINDOWS\system32\odbcjt32.dll"
lRes = RegSetValueExString(hKey, "Driver", 0&, REG_SZ, _
szKeyValue, Len(szKeyValue))
'Driverid
szKeyValue = "19"
' lRes = RegSetValueExString(hKey, "DriverId", 0&, REG_DWORD, _
' szKeyValue, Len(szKeyValue))
'FIL
szKeyValue = "MS Access;"
'szKeyValue = "C:\WINDOWS\System32\vfpodbc.dll"
lRes = RegSetValueExString(hKey, "FIL", 0&, REG_SZ, _
szKeyValue, Len(szKeyValue))
'PWD
szKeyValue = sDBPassword ' "********"
lRes = RegSetValueExString(hKey, "PWD", 0&, REG_SZ, _
szKeyValue, Len(szKeyValue))
'SafeTransactions
' szKeyValue = "0"
' lRes = RegSetValueExLong(hKey, "SafeTransactions", 0&, REG_DWORD, CLng(0), CLng(0))
'UID
szKeyValue = ""
lRes = RegSetValueExString(hKey, "UID", 0&, REG_SZ, _
szKeyValue, Len(szKeyValue))
'*****************************************************************************
lRes = RegCreateKey(HKEY_LOCAL_MACHINE, szKeyPath, hKey)
If lRes <> ERROR_SUCCESS Then
Exit Function
End If
lRes = RegCloseKey(hKey)
lRes = RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources", hKey)
If lRes <> ERROR_SUCCESS Then
Exit Function
End If
szKeyValue = "Microsoft Access Driver (*.mdb)" 'Microsoft Access Driver (*.mdb)
lRes = RegSetValueExString(hKey, szWantedDSN, 0&, REG_SZ, szKeyValue, Len(szKeyValue))
lRes = RegCloseKey(hKey)
CreateLagerkollDSN = True
Exit Function
functionError:
MsgBox "Fel vid skapandet av DSN conn" & vbCrLf & Err.Description, , Err.Number
End FunctionSv: Skapa ODBC koppling med kod /vb6?
Sv:Skapa ODBC koppling med kod /vb6?
http://www.pellesoft.se/area/articles/article.aspx?artid=935Sv: Skapa ODBC koppling med kod /vb6?
Sv:Skapa ODBC koppling med kod /vb6?
<code>
Private Const REG_DWORD As Long = 4
'eller kanske detta också går
Private Const REG_DWORD = 4&
</code>Sv: Skapa ODBC koppling med kod /vb6?
Skall vara hexadecimalt värde?Sv:Skapa ODBC koppling med kod /vb6?
<code>
Private Const REG_DWORD = &H80000004
'möjligtvis går detta också
Private Const REG_DWORD = &H4
</code>
Tänkte på de. Är det kanske 4 som är ogiltigt !?Sv: Skapa ODBC koppling med kod /vb6?
Inte rätt?
Jag skapar så här & jag tror felet ligger här:
szKeyValue = "19"
lRes = RegSetValueExString(hKey, "DriverId", 0&, REG_DWORD, _
szKeyValue, Len(szKeyValue))
Och
szKeyValue = "0"
lRes = RegSetValueExString(hKey, "SafeTransactions", 0&, REG_DWORD, _
szKeyValue, Len(szKeyValue))Sv:Skapa ODBC koppling med kod /vb6?
DWORD 0x00000004(4)
Vad blir det om du kör alternativ 2
Private Const REG_DWORD = &H4
Testa också
Private Const REG_DWORD = &H00000004 (7 nollor 4)Sv: Skapa ODBC koppling med kod /vb6?
8:an är fel det är ett VB trix som jag aldrig begripit
borde vara
Private Const HKEY_LOCAL_MACHINE = &H2
Private Const REG_DWORD = &H4
Eller det mest logiska eftersom Functionen vill ha Long som parameter
Private Const HKEY_LOCAL_MACHINE = 2&
Private Const REG_DWORD = 4& Sv:Skapa ODBC koppling med kod /vb6?
Kan du tvångsmata genom att Editera i RegisterEditorn.
Hur står det nu ?Sv: Skapa ODBC koppling med kod /vb6?
Var kommer dom ifrån ?
Testa att ändra dom till något annat = 0& osv.
Edit:
Vi får göra ett "dummy" prog som testar att få
<b>Private Declare Function RegSetValueExString Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpValue As String, ByVal cbData As Long) As Long</b> att fungera
<code>
'Driverid
szKeyValue = "19"
lRes = RegSetValueExString(hKey, "DriverId", 0&, REG_DWORD, _
szKeyValue, Len(szKeyValue))
</code>Sv:Skapa ODBC koppling med kod /vb6?
<code>
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" _
(ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, _
ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Sub SaveStringLong(hKey As Long, strPath As String, strValue As String, strData As String)
Dim Ret
'Create a new key
RegCreateKey hKey, strPath, Ret
'Set the key's value
RegSetValueEx Ret, strValue, 0, REG_BINARY, CByte(strData), 4
'close the key
RegCloseKey Ret
End Sub
'Börja att ändra detta till
szKeyValue = "19"
lRes = RegSetValueEx(hKey, "DriverId", 0&, REG_DWORD, _
szKeyValue, Len(szKeyValue))
Och
szKeyValue = "0"
lRes = RegSetValueEx(hKey, "SafeTransactions", 0&, REG_DWORD, _
szKeyValue, Len(szKeyValue))
</code>Sv:Skapa ODBC koppling med kod /vb6?
<code>
Const REG_SZ = 1 ' Unicode nul terminated string
Const REG_BINARY = 3 ' Free form binary
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
</code>Sv: Skapa ODBC koppling med kod /vb6?