Results 1 to 5 of 5

Thread: Serious Problem - Connecting to a Text Database

  1. #1

    Thread Starter
    New Member
    Join Date
    Oct 2000
    Posts
    13

    Exclamation

    Is there any body out there to help me.. I have a Problem in Connecting to a Text Database Using ODBC


    The Cooection String I used is

    "Provider=MSDASQL;Driver={Microsoft Text Driver(*.txt;*.csv)};DBQ=E:\D999\;"


    where I have all my text files in my E:\D999\ directory.

    But when I tried to Open the Connection
    it says "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified"

    Please help me to Solve this ,its Very Urgent ...




    Suman Perumbully
    www.perumbully.itgo.com

  2. #2
    Guest
    Hi Suman, are u sure u created a DSN (Data Source Name) using the ODBC32 bit. You can go to the control panel and click on the ODBC32 and then create a new text DSN and use it in ur connection string. I can try and send u the code if u wish so. Please mail to [email protected]. All the best...vijay

  3. #3

    Thread Starter
    New Member
    Join Date
    Oct 2000
    Posts
    13

    DSN-less Connection to a Text Database

    Thanks for that reply . But the Problem is that I dont want to create a DSN manually . I want to connect to the Text Database using a DSNless Connection .

    When I am using the DSN its Connecting to the Database .But the application which I am creating is gonna be distributed one . So I cant expect the users to create a DSN on each PC's . Thats why I want a DSN less Connection .

    Is there a way to Connect to Text Database using OLEDB without using the ODBC ..


    Please Help me ..
    Suman Perumbully
    www.perumbully.itgo.com

  4. #4
    New Member
    Join Date
    Oct 2000
    Posts
    2

    Exclamation

    Dear Suman,

    As you can see in http://support.microsoft.com/support.../Q174/6/55.ASP the driver name must match exactly the name as it is installed in your computer. Have you checked that???

    Good luck,

    gparreira

  5. #5

    Thread Starter
    New Member
    Join Date
    Oct 2000
    Posts
    13

    At last ... I had to use a DSN

    I checked that and I think the odbcjt32.dll or mstext40.dll version seems to be different than earlier coz I had installed MDAC 2.5 2 days back . So at last I had to write it in a different way .. Create a DSN programmatically . If DSN already exist then modify the DSN ...

    I am writing the Code for that here ... May be useful for some one ...

    Put the Following Code in a Module


    '-------Module Starts-------------

    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 RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Private Const HKEY_LOCAL_MACHINE = &H80000002
    Public Const HKEY_CURRENT_USER = &H80000001
    Private Const ERROR_SUCCESS = 0&
    Private Const KEY_QUERY_VALUE = &H1
    Private Const KEY_NOTIFY = &H10
    Private Const READ_CONTROL = &H20000
    Private Const KEY_ENUMERATE_SUB_KEYS = &H8
    Private Const STANDARD_RIGHTS_READ = (READ_CONTROL)
    Private Const SYNCHRONIZE = &H100000
    Private Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
    Public Enum enumDSNType
    eUser = 1
    eSystem = 2
    End Enum

    Private Declare Function SQLConfigDataSource Lib "odbccp32.dll" (ByVal hwndParent As Long, ByVal fRequest As Integer, ByVal lpszDriver As String, ByVal lpszAttributes As String) As Long

    Private Const ODBC_ADD_SYS_DSN = 4 ' Add data source
    Private Const ODBC_CONFIG_SYS_DSN = 5 ' Configure (edit) data source

    Public Function IsDSNExist(pDSNName As String, pType As enumDSNType) As Boolean
    Dim lKeyHandle As Long
    Dim lRet As Long
    Dim strBuffer As String
    Dim strKey As String
    Dim strValue As String

    strKey = "SOFTWARE\ODBC\ODBC.INI\" & pDSNName

    If pType = eSystem Then
    lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, strKey, 0, KEY_READ, lKeyHandle)
    Else
    lRet = RegOpenKeyEx(HKEY_CURRENT_USER, strKey, 0, KEY_READ, lKeyHandle)
    End If
    If lRet = ERROR_SUCCESS Then
    IsDSNExist = True
    RegCloseKey lKeyHandle
    End If
    End Function
    Public Function CreateDSN(DSNName As String, StrPath As String, Add As Boolean) As Boolean
    On Error GoTo errdsn
    CreateDSN = True

    Dim StrAttr As String
    Dim ErrObj As Error



    StrAttr = "CHARACTERSET=OEM" & Chr(0)
    StrAttr = StrAttr & "COLNAMEHEADER=TRUE" & Chr(0)
    StrAttr = StrAttr & "DEFAULTDIR=" & StrPath & "" & Chr(0)
    StrAttr = StrAttr & "DESCRIPTION=dotwtext" & Chr(0)
    StrAttr = StrAttr & "DSN=dotwtext" & Chr(0)
    StrAttr = StrAttr & "EXTENSIONS=txt,asc,csv,tab" & Chr(0)
    StrAttr = StrAttr & "FIL=text" & Chr(0)
    StrAttr = StrAttr & "FILETYPE=Text" & Chr(0)
    StrAttr = StrAttr & "FORMAT=csv" & Chr(0)
    StrAttr = StrAttr & "MAXSCANROWS=25" & Chr(0)
    StrAttr = StrAttr & "READONLY=FALSE" & Chr(0)
    StrAttr = StrAttr & "DRIVERID=27" & Chr(0)


    If Add = True Then
    If SQLConfigDataSource(0, ODBC_ADD_SYS_DSN, _
    "Microsoft Text Driver (*.txt; *.csv)", StrAttr) Then

    Else
    MsgBox Err.Description, vbExclamation, "ETM Agent"
    CreateDSN = False
    End If
    Else
    If SQLConfigDataSource(0, ODBC_CONFIG_SYS_DSN, _
    "Microsoft Text Driver (*.txt; *.csv)", StrAttr) Then

    Else
    MsgBox Err.Description, vbExclamation, "ETM Agent"
    CreateDSN = False
    End If
    End If

    Exit Function
    errdsn:
    For Each ErrObj In Errors
    MsgBox ErrObj.Description, vbExclamation, "ETM Agent"
    Next
    CreateDSN = False
    End Function


    '------------Module Ends-----------------


    Now From the Calling Form Use the Following Code


    Dim ConText as new ADODB.Connection
    ConText.CursorLocation = adUseClient


    If Not IsDSNExist("dotwtext", eSystem) Then
    If CreateDSN("dotwtext", sttmpPath, True) = False Then
    ImportFromTXT = False
    Exit Function
    End If

    Else
    If CreateDSN("dotwtext", sttmpPath, False) = False Then
    ImportFromTXT = False
    Exit Function
    End If
    End If

    If ConText.State = adStateOpen Then ConText.Close
    ConText.Open "dotwtext"






    And thats all to it .. I did it Finally ... And thanks to all of you who tried to give me solution for DSN less Connection ... I hope that No VB developers are gonna get freedom from these sort of Problems unless Microsoft stabilizes and Finalizes its Dlls ...


    Suman Perumbully
    www.perumbully.itgo.com

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width