Announcement

Collapse
No announcement yet.

VBS/ADO: EOF Fehler beim Lesen eines Records

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • VBS/ADO: EOF Fehler beim Lesen eines Records

    Hallo Leute,

    ich habe folgendes Problem:

    ich möchte aus einer MS SQL Server 2005 Datenbank den Maximalwert einer Spalte ermitteln und diesen einer Variablen zuweisen. Der Code wurde in VBSkript mit ADO 2.8 (beides Vorgaben, d. h. bitte keine Vorschläge zur Nutzung von .Net oder anderen Lösungswegen) geschrieben und sieht auszugsweise folgendermaßen aus:

    ...
    objConnection.Open
    objConnection.DefaultDatabase = Datenbank

    ...

    objRecordSet.CursorType = 3
    objRecordSet.Open "SELECT MAX(Spaltenanme) FROM Datenbanktabelle",objConnection

    MsgBox objRecordSet.RecordCount

    strMaxwert = objRecordSet.GetString()
    ...


    Für die letzte Zeile erhalte ich folgende Fehlermeldung: 'Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.'

    Nach dem Open-Befehl erhalte ich folgende RecordSet-Eigenschaften:
    .AbsolutePosition = 1
    .BOF = false
    .EOF = false
    .RecordSet = 1
    .state = 1

    Nach dem MsgBox-Befehl sehen die Eigenschaften wie folgt aus:
    .AbsolutePosition = -3
    .BOF = false
    .EOF = true
    .RecordSet = 1
    .state = 1

    Die Fehlermeldung tritt unabhängig davon auf, ob ich den MsgBox-Befehl im Skript habe, oder nicht.

    Was muss ich tun, um den Record einer Variablen zuweisen zu können? Wo liegt mein Fehler?

  • #2
    Hallo Franky,

    eigentlich greift man über die Fields-Auflistung von eine ADO-Recordset auf die Spalten des Ergebnis zu.

    Versuch mal:
    strMaxwert = objRecordSet.Fields(0)

    Oder mit 1, ich weiß gerade nicht, wo da die Base ist. Besser Du gibt ein ALIAS an, dann kannst Du über den Namen zugreifen, also:


    objRecordSet.Open "SELECT MAX(Spaltenanme) AS MaxWert FROM Datenbanktabelle",objConnection

    strMaxwert = objRecordSet.Fields("MaxWert")

    Olaf
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Hi Olaf,

      ich habe den Fehler gefunden. Es lag am Debugmodus.

      Ohne Debugmodus bzw. mit einem Breakpoint nach der Zeile

      strMaxwert = objRecordSet.Fields("MaxWert")

      lief alles einwandfrei. Ein Breakpoint vorher führt zu dem oben genannten Fehler.

      Danke nochmal für die Hilfe!

      Franky

      Comment

      Working...
      X