Fehlermeldung b. leerer Datenbank

02/02/2009 - 13:46 von Andreas Ahrens | Report spam
Hi NG,

bei leerer Datenbank bekomme ich die Fehlermeldung:

Entweder BOF oder EOF ist true... Der angeforderte Vorgang
benötigt einen aktuellen Datensatz

obwohl ein leerer Datensatz erzeugt wurde.

Private Sub Form_Load()
'beim Öffnen neuer DS

DoCmd.Maximize
DoCmd.GoToRecord , , acNewRec
Me.AdressID.SetFocus
Me.AdressID = SuchNummer
Me.Betreff.SetFocus
End Sub

Private Sub sFbriefErstellen_Click()
' Brief mit ausgewàhltem Formular und ausgewàhltem Text erstellen
' Kombinationsfeld darf KEINEN Steuerelementinhalt haben!!!!

Dim wo As Object

Dim db As New ADODB.Connection
Dim rs As ADODB.Recordset

Set db = CurrentProject.Connection

Set rs = New ADODB.Recordset


Set wo = CreateObject("Word.Application")

rs.Open "SELECT Brief.AdressID, Adressen.AdressID, Adressen.Anrede, " & _
"Adressen.VName, Adressen.NName, Adressen.Firma,
Adressen.Abteilung, " & _
"Adressen.zHd, Adressen.Straße, Adressen.Plz, Adressen.Ort,
Adressen.Textanrede, " & _
"Brief.BriefID, Brief.Betreff, Brief.Text, Brief.Dokument,
Brief.gedruckt_am, " & _
"Brief.gedruckt, Brief.WiedervorlageID, Brief.FormularID,
Formular.Formularname, " & _
"Formular.DokumentName, Formular.Speicherpfad, Formular.Art " & _
"FROM Adressen INNER JOIN (Formular INNER JOIN Brief ON
Formular.FormID = Brief.FormularID) " & _
"ON Adressen.AdressID = Brief.AdressID", db


rs.MoveFirst

'Formular suchen
rs.Filter = "FormularID = '" & Me.Formularname & "'"

With wo

'Dokument oder Vorlage
If rs.Fields("Art") = "Dokument" Then
.Documents.Open FileName:=CStr(rs.Fields("DokumentName"))
Else
.Documents.Add Template:=CStr(rs.Fields("DokumentName"))
End If

.Selection.TypeText CStr(rs.Fields("Betreff"))
.Selection.TypeText CStr(rs.Fields("Text"))

'Speichern
.ActiveDocument.SaveAs FileName:=CStr(rs.Fields("Speicherpfad") &
UCase(rs.Fields("Betreff"))) & " " & Date & ".DOC"

'soll Word geöffnet werden?
If rs.Fields("WordOffen") = True Then
'schließen mit speichern
.Visible = True
Else
.ActiveDocument.Close savechanges:=wdSaveChanges
.Quit
End If

'Daten in "Brief" eintragen
DoCmd.RunSQL "UPDATE Brief SET Brief.Dokument = '" &
UCase(rs.Fields("Betreff")) & Date & ".DOC', " & _
"Brief.gedruckt_am = '" & Date & "'," & _
"Brief.gedruckt = true"

'rs.Fields("Dokument") = UCase(rs.Fields("Betreff")) & Date & ".DOC"
'rs.Fields("gedruckt_am") = Date
'rs.Fields("gedruckt") = True

End With

rs.Close
db.Close
DoCmd.Close

End Sub

Wo liegt das Problem?

Gruss
Andy
 

Lesen sie die antworten

#1 Mark Doerbandt
02/02/2009 - 13:48 | Warnen spam
Hallo, Andreas,

Andreas Ahrens:

bei leerer Datenbank bekomme ich die Fehlermeldung:

Entweder BOF oder EOF ist true... Der angeforderte Vorgang
benötigt einen aktuellen Datensatz

obwohl ein leerer Datensatz erzeugt wurde.

Private Sub Form_Load()
'beim Öffnen neuer DS

DoCmd.Maximize
DoCmd.GoToRecord , , acNewRec
Me.AdressID.SetFocus
Me.AdressID = SuchNummer
Me.Betreff.SetFocus



Damit erzeugst Du noch keinen neuen Datensatz. Mit Me.Dirty=False
koenntest Du, aber wozu soll das gut sein?

End Sub

Private Sub sFbriefErstellen_Click()
' Brief mit ausgewàhltem Formular und ausgewàhltem Text erstellen
' Kombinationsfeld darf KEINEN Steuerelementinhalt haben!!!!

Dim wo As Object

Dim db As New ADODB.Connection
Dim rs As ADODB.Recordset

Set db = CurrentProject.Connection

Set rs = New ADODB.Recordset


Set wo = CreateObject("Word.Application")

rs.Open "SELECT Brief.AdressID, Adressen.AdressID, Adressen.Anrede, " & _
"Adressen.VName, Adressen.NName, Adressen.Firma,
Adressen.Abteilung, " & _
"Adressen.zHd, Adressen.Straße, Adressen.Plz, Adressen.Ort,
Adressen.Textanrede, " & _
"Brief.BriefID, Brief.Betreff, Brief.Text, Brief.Dokument,
Brief.gedruckt_am, " & _
"Brief.gedruckt, Brief.WiedervorlageID, Brief.FormularID,
Formular.Formularname, " & _
"Formular.DokumentName, Formular.Speicherpfad, Formular.Art " & _
"FROM Adressen INNER JOIN (Formular INNER JOIN Brief ON
Formular.FormID = Brief.FormularID) " & _
"ON Adressen.AdressID = Brief.AdressID", db


rs.MoveFirst



If not rs.EOF Then


'Formular suchen
rs.Filter = "FormularID = '" & Me.Formularname & "'"

With wo

'Dokument oder Vorlage
If rs.Fields("Art") = "Dokument" Then
.Documents.Open FileName:=CStr(rs.Fields("DokumentName"))
Else
.Documents.Add Template:=CStr(rs.Fields("DokumentName"))
End If

.Selection.TypeText CStr(rs.Fields("Betreff"))
.Selection.TypeText CStr(rs.Fields("Text"))

'Speichern
.ActiveDocument.SaveAs FileName:=CStr(rs.Fields("Speicherpfad") &
UCase(rs.Fields("Betreff"))) & " " & Date & ".DOC"

'soll Word geöffnet werden?
If rs.Fields("WordOffen") = True Then
'schließen mit speichern
.Visible = True
Else
.ActiveDocument.Close savechanges:=wdSaveChanges
.Quit
End If

'Daten in "Brief" eintragen
DoCmd.RunSQL "UPDATE Brief SET Brief.Dokument = '" &
UCase(rs.Fields("Betreff")) & Date & ".DOC', " & _
"Brief.gedruckt_am = '" & Date & "'," & _
"Brief.gedruckt = true"

'rs.Fields("Dokument") = UCase(rs.Fields("Betreff")) & Date & ".DOC"
'rs.Fields("gedruckt_am") = Date
'rs.Fields("gedruckt") = True

End With



End If

rs.Close
db.Close
DoCmd.Close

End Sub



Gruss - Mark

Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beitràge senden.

Ähnliche fragen