Problem bei einer SQl abfrage

CrimeTime

Erfahrenes Mitglied
Hallo Leute,
ich arbeite wieder mal an einem Neuen Projekt, und schon habe ich wieder ein Problemchen

hier der Code

Code:
Dim rs As New adodb.Recordset
Username = "SELECT username FROM users WHERE username = '" & Username & "'"
rs.Open Username, Mysql_Connection
MySQL.Array_Query = rs.GetString
getUsername = MySQL.Array_Query

If EncodeName(LCase(getUsername)) = True Then
Form1.SckClient(Socket).SendData "ok"
Else
Form1.SckClient(Socket).SendData "nicht ok"
End If
rs.Close


der fehler ist : Run-Time error '3021':

Entweder BOF oder EOF ist True, oder der Aktuelle Datensatz wurde gelöscht. Der angeforderte Vorgang benötigt einen aktuellen Datensatz.


kann jemand weiter helfen?
 
Guten Morgen,

der Grund warum dir auf die Frage keine antwortet könnte darin liegen das man mit deinem Codeschnipsel nicht viel anfangen kann. Fakt ist jedoch das du entweder kein Connect zur DB hast oder die Abfrage murks ist. Wie kannst du einer Variable Username einen String zuweisen in dem sie selber vorkommt? Hast du 2 Variablen Username? was übergibst du da? Wo kommt das Connect zur MySQL DB her, wie stellst du das her. Hat das schonmal funktioniert? hier fehlen grundlegende Informationen um dir helfen zu können.
 
Das ist die Connection

Code:
MySQL.Server = GetINISetting(App.Path & "\Settings.ini", "Mysql Settings", "Server", "")
MySQL.Username = GetINISetting(App.Path & "\Settings.ini", "Mysql Settings", "Username", "")
MySQL.password = GetINISetting(App.Path & "\Settings.ini", "Mysql Settings", "Password", "")
MySQL.Database = GetINISetting(App.Path & "\Settings.ini", "Mysql Settings", "Database", "")
MySQL.Connect

Ich hoffe das hilft dir weiter, und JA die Verbindung geht 1A
 
EOF kommt, wenn er keinen Datensatz gefunden hat, der passt. Badboyws hat schon recht, Deine Aussagen bringen wirklich nicht weiter.

Auch das was Du nachgeliefert hast, hilft nicht. Du erstellst die Connection durch irgendwelche Ini-Einträge, man sieht aber nicht welche. Da die Connection ansonsten funktionieren soll, ist dies aber unerheblich.

Wichtig wären eher zusätzliche Angaben zu Deinem Code:

Username = "SELECT username FROM users WHERE username = '" & Username & "'"
rs.Open Username, Mysql_Connection

Hier verwendest Du "Username" als Parameter in der Where-Clause, setzt es aber gleichzeitig als Variable für den SQL-String. Wo das ursprüngliche "Username" herkommt, ist dem Leser schleierhaft, und wir wissen natürlich auch nicht, was da drin steht.

Vermutlich ist für diesen Username einfach kein Datensatz da, z.B. falsch geschrieben, in der Datenbank ohne Leerzeichen gefüllt und in der Variablen mit usw. Wenn z.B. in Deiner Variablen steht "Heinz " und in der Datenbank "Heinz", dann wird dieser Heinz nie gefunden!

Ohne weitere und wirklich aussagefähige Informationen kann Dir hier wirklich keiner helfen, das ist nur Kaffeesatzleserei.

ronaldh
 
Hier mal die Komplette MySqL module

Code:
Public Mysql_Connection As New adodb.Connection
Private rs As New adodb.Recordset

Public Server As String
Public Username As String
Public password As String
Public Database As String
Public Last_Query As String
Public Array_Query As Variant



Function Connect() As Boolean
 Connect = True
 
 On Error GoTo Err
 
   If Mysql_Connection.State = adStateOpen Then Mysql_Connection.Close
      
   Mysql_Connection.Open "driver={MySQL ODBC 3.51 Driver};server=" & Server & ";uid=" & Username & ";pwd=" & password & ";database=" + Database
     Form1.StatusBar1.SimpleText = "Mysql Status: Succsefully logged in!"
 Exit Function
  
Err:
 Connect = False
 Form1.StatusBar1.SimpleText = "Mysql Status: Connecting Failed!"
End Function


Function Query(SQL As String) As Boolean
On Error Resume Next
    With rs
        rs.Open SQL, Mysql_Connection
        MySQL.Last_Query = rs.GetString
        rs.Close
    End With
End Function

Function Fetch_Array(STR As String) As Boolean
    MySQL.Array_Query = Split(STR, vbTab)
End Function

Function CloseConnection()
 Mysql_Connection.Close
 frmMain.StatusBar1.SimpleText = "Mysql Status: Disconnected!"
End Function

ich hoffe sehr das es eucht weiter hilft
 
Guten Morgen,

so langsam wirds doch interessant. Was passiert wenn du es so machst:
Visual Basic:
Dim SQL As String
SQL = "SELECT username FROM users WHERE username = '<Name>' "
rs.Open SQL, Mysql_Connection
und schreib anstelle von <Name> bitte einen Usernamen rein der auch wirklich in der Tabelle users ist. (Ich geh einfach mal davon aus das die Tabellenstruktur ansich stimmt und die Tabelle wirklich users heißt)

Wenns nicht geht, meldest dich wieder.
 
Guten Morgen,
Visual Basic:
Dim SQL As String
SQL = "SELECT username FROM users WHERE username = '<Name>' "
rs.Open SQL, Mysql_Connection

Wenns nicht geht, meldest dich wieder.

Hallo Badboyws,
ich hab glaub das Projekt von damals in die Tonne gekloppt, aber nun ganz aktuell hänge ich am gleichen Problem leider, ich habe nun dies hier :

Visual Basic:
Dim rs As New ADODB.Recordset
Dim SQL As String
SQL = "SELECT ID FROM LINK WHERE ID = '51701'"
rs.Open SQL, Mysql_Connection

Text1.Text = SQL

nur bei dem kann man sich absolut nicht Sichersein ob die abfrage überhaupt erfolgreich war, weil der das ja dann einfach in die Textbox schreibt.

wenn ich es aber so mache :
Visual Basic:
Dim rs As New ADODB.Recordset
Dim SQL As String

linkid = "SELECT ID FROM LINK WHERE ID = '" & currentid & "'"
rs.Open linkid, Mysql_Connection
MySQL.Array_Query = rs.GetString
Text1.Text = currentid

kommt wieder wie vom ersten Artikel in diesem thread die Meldung mit EOF und BOF.

hoffe kannst dabei helfen


Gruß CrimeTime
 
Zurück