Zugriff auf Tabelle mit ADO

Das ist ja vollkommen richtig das für conn wenn du eine Instanz
von currentproject.connection erstellst nicht noch mal den Provider
etc. angeben musst.
Aber du bekommst ja den Fehler "Typen unverträglich" beim erstellen
der Instanz deshalb wollte ich wissen welchen Provider, Datenbank
usw. dem ADO Connection Objekt currentproject.connection zugeordnet
sind.
Zeige doch bitte mal den Code in dem currentproject.connection deklariert
und zugewiesen bzw. geöffnet wird. Nur so kommen wir weiter
 
Unten stehen alle information über meinen ConnectionString und meinen ganzen Code.


Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Eigene Dateien\datenbank\23.05\FE.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database=C:\Dokumente und Einstellungen\h\Anwendungsdaten\Microsoft\Access\System.mdw;Jet OLEDB:Registry Path=SOFTWARE\Microsoft\Office\10.0\Access\Jet\4.0;Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
 
Zuletzt bearbeitet:
Hallo knowlegde,

tut mir leid das einzige was ich hier sofort sehe ist das ein
NEW fehlt wie oben beschrieben.
Die Angaben zum Provider etc. scheinen ok zu sein aber ich kann
immer noch nicht erkennen wo du dies zuordnest.
Das kann doch nicht der ganze Quellcode sein ? Wo ist CurrentProject deklariert ?

Mir fällt grad was auf. Kann es sein das CurrentProject die bestehende
ADO Connection ist ?
Dann ist klar das der Fehler "Typen unverträglich" kommt und es müsste
dann wohl heißen.

Set conn = NEW CurrentProject

Wenn das nicht der Fehler ist dann stelle doch mal das ganze Projekt gezippt hier
rein.

Jens
 
ich habe mich über zwei Tage mit dem Problem beschäftigt aber ich sehe keine Hoffnung. Es ist bestimmt ein kleines oder ganz großes Fehler. Der Projekt ist zu gross aber ich schicke dir die originale Version von dem Code. Erstell bitte ein formular und probier mit dem Code und sag mir bitte wie es bei dir funktioniert.
 
Zuletzt bearbeitet:
Was für eine schwere Geburt :-(
Also mit dem Codeschnipsel kann leider keiner was anfangen denke ich.
Es ist immer noch nicht ersichtlich was CurrentProject ist und wo die Deklaration
statt findet. Und der Codeauschnitt zeigt ja lediglich eine Funktion die meiner Meinung
nach noch nie funktioniert haben kann.
Stammt dieser Orginalcode von dir oder wo hast du ihn her ?
Ohne zu sehen wo dem Objekt "CurrentProject" die Datenbank und der Provider
zugewiesen werden ist das ganze ziemlich sinnlos.
Mit diesem Codeschnipsel kann keiner etwas Testen, da die Datenbank nicht zu Verfügung steht und der Schnipsel auch nicht gerade aussagekräftig ist.
Also wenn du nicht noch 2 Tage oder gar 2 Wochen daran suchen willst dann zeige das komplette Projekt oder zumindest den Codeteil wo die ADO Connection "CurrentProject
" geöffnet wird.
 
Na dann misch ich mich auch noch mal ein :)

also als erstes möchte ich mal anmerken, dass der kleine Hinweis, dass es sich um ein ACCESS-Project handelt doch schon angebracht gewesen währe.

Ich rekaputiliere noch mal: Du hast eine Form mit zwei Feldern (Benutzer und Paßwort) und wahrscheinlich einen Button (Anmelden). Wenn die Eingabe erfolgt ist, möchtest Du schlicht ergreifend wissen, ob die Konstellation Benutzername/Passwort in Deiner Tabelle Erlaubte_Benutzer eingetragen ist. Also hier erst mal Dein Code so modifiziert, dass er zumindest bei mir lauffähig ist.
Code:
Rem ===========================================================================
Rem == Deine Angepasste Funktion.                                            ==
Rem ===========================================================================
'
Private Function fktbenutzersuchen() As Boolean
    Dim conn                                As ADODB.Connection
    Dim dsbenutzer                          As ADODB.Recordset
    Dim kriterium                           As String
    Dim strSQL                              As String

    Rem =======================================================================
    Rem == Prüfung nur durchführen, wenn eine Eingabe vorhanden ist.         ==
    Rem =======================================================================
    If IsNull(Forms![SYS) Anmeldung]!Benutzer) Then
        MsgBox "Bitte Benutzername und Passwort eingeben", _
               vbOKOnly + vbExclamation + vbSystemModal
        DoCmd.Beep
        Forms![SYS) Anmeldung]!Benutzer.SetFocus
        Exit Function
    End If
 
    Rem =======================================================================
    Rem == Datenbankverbindung clonen; SQL-String aufbauen und Datensätze    ==
    Rem == suchen.                                                           ==
    Rem =======================================================================
    Set conn = CurrentProject.Connection
    Set dsbenutzer = New ADODB.Recordset
    dsbenutzer.Open "Erlaubte_Benutzer", conn, adOpenKeyset, adLockOptimistic, adCmdTable
    kriterium = "[Benutzer]='" & Forms![SYS) Anmeldung]!Benutzer & "'"
    dsbenutzer.Find kriterium, , adSearchForward, 1

    Rem =======================================================================
    Rem == Prüfung, ob Datensätze gefunden wurden.                           ==
    Rem =======================================================================
    If dsbenutzer.EOF Then
        Exit Function
    End If
        
    Rem =======================================================================
    Rem == Alle gefundenen Datensätze durchlaufen, um Passwortprüfung durch- ==
    Rem == zuführen.                                                         ==
    Rem =======================================================================
    Do
        If dsbenutzer!Paßwort = Forms![SYS) Anmeldung]!Paßwort Then
            loc_user_fullname = dsbenutzer![voller_name]
            loc_user_abteilung = dsbenutzer![Abteilung]
            loc_user_telefon = dsbenutzer![Telefon]
            loc_user_telefax = dsbenutzer![Fax]
            fktbenutzersuchen = True
            Exit Do
        End If
        dsbenutzer.Find kriterium, 1, adSearchForward
    Loop While Not dsbenutzer.EOF

    Rem =======================================================================
    Rem == Alles wieder sauber schließen.                                    ==
    Rem =======================================================================
    dsbenutzer.Close
    Set dsbenutzer = Nothing
    Set conn = Nothing
End Function

Und nach meiner bescheidenen Meinung ist diese Lösung die effektivste:
Code:
Rem ===========================================================================
Rem == Mein Vorschlag zur Lösung des Problemes.                              ==
Rem == Du mußt aber auf jeden Fall dafür sorgen, dass es die Konstellation   ==
Rem == Username/Passwort nur einmal UNIQUE gibt.                             ==
Rem ===========================================================================
'
Private Function bCheckUser() As Boolean
    Dim rTmpRecordset                       As New ADODB.Recordset
    Dim strSQL                              As String

    Rem =======================================================================
    Rem == Prüfung nur durchführen, wenn eine Eingabe vorhanden ist.         ==
    Rem =======================================================================
    If IsNull(Forms![SYS) Anmeldung]!Benutzer) Then
        MsgBox "Bitte Benutzername und Passwort eingeben", _
               vbOKOnly + vbExclamation + vbSystemModal
        DoCmd.Beep
        Forms![SYS) Anmeldung]!Benutzer.SetFocus
        Exit Function
    End If
 
    Rem =======================================================================
    Rem == Datenbankverbindung clonen; SQL-String aufbauen und Datensätze    ==
    Rem == suchen.                                                           ==
    Rem =======================================================================
    strSQL = "SELECT * FROM Erlaubte_Benutzer WHERE Benutzer='" & Forms![SYS) Anmeldung]!Benutzer & "'" & _
             " AND Paßwort='" & Forms![SYS) Anmeldung]!Paßwort & "'"
    rTmpRecordset.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdText

    Rem =======================================================================
    Rem == Prüfung, ob Datensätze gefunden wurden.                           ==
    Rem =======================================================================
    If rTmpRecordset.RecordCount <= 0 Then
        bCheckUser = False
    Else
        bCheckUser = True
    End If

    Rem =======================================================================
    Rem == Alles wieder sauber schließen.                                    ==
    Rem =======================================================================
    rTmpRecordset.Close
    Set rTmpRecordset = Nothing
End Function

Hope it helps
Das Orakel
 
Hope it helps
Das Orakel
__________________
Ein Fremder ist ein Freund, den Du nur noch nicht kennst


Danke, du hast wirklich mir geholfen und ja das klappt mit deiner Idee. Nobel Price goes to you.
 
Zurück