aximand
Goto Top

Keine gültige Recordseteigenschaft bei Abfrage eines MSSQL-Views

Hallo,

ich habe in einer Datenbank neben Tabellen auch einige Views.

Bei wenigen views bekomme ich als Rückgabewertvon RecordCount -1, obwohl einige Datensätze vorhanden sind, wenn ich mit dem Managementstudio die SQL-Abfrage ausführe.

Es erscheint der Laufzeitfehler 7965 "Das eingegebene Objekt ist keine gültige Recordseteigenschaft."


Private Sub Form_Load()

Dim rs As ADODB.Recordset
ConnectSQL (0) '0= OfficeLine Datenbank, 1= QS-Datenbank  
Set rs = New ADODB.Recordset

With rs
Set .ActiveConnection = conDB 'Public conDB As ADODB.Connection  

  .LockType = adLockOptimistic
  .CursorType = adOpenKeyset
  .Open "Select * from vwDWDWareneingangsBelegPositionen_QSoffen" ' view aller QS_erfolgt = NULL  

End With
Debug.Print rs.RecordCount 'zeig mir die Anzahl an Datensätze  
Set Me.Recordset = rs
 
Do Until Me.Recordset.EOF
    Me.VorID.ControlSource = Me.Recordset.Fields("VorID").Name  
    Me.Belegjahr.ControlSource = Me.Recordset.Fields("Belegjahr").Name  
    Me.Belegnummer.ControlSource = Me.Recordset.Fields("Belegnummer").Name  
    Me.Liefertermin.ControlSource = Me.Recordset.Fields("Liefertermin").Name  
    Me.Recordset.MoveNext
Loop
view

Content-Key: 384348

Url: https://administrator.de/contentid/384348

Printed on: May 21, 2024 at 11:05 o'clock

Member: colinardo
colinardo Aug 24, 2018 updated at 11:05:57 (UTC)
Goto Top
Wundert mich nicht, du nutzt einen dynamischer Cursor und da gibt RecordCount keine zuverlässigen Werte:
https://stackoverflow.com/questions/28560897/vbscript-adodb-recordset-re ...

Grüße Uwe
Member: Aximand
Aximand Aug 24, 2018 at 11:09:20 (UTC)
Goto Top
Mir gehts ja auch eigentlich nicht um RecordCount, sondern darum, dass diese Fehlermeldung hoch kommt.
Und das nur bei 2,3 Views. Würde ich jetzt eine andere Tabelle oder einen anderen View darein setzten, dann zieht sich die Abfrage die Daten.
Dann passen zwar die Feldzuweisungen unten nicht, weil es die Felder nicht in den Tabellen/VIews gibt - aber grundsätzlich funktionierts
Member: colinardo
Solution colinardo Aug 24, 2018 updated at 11:34:09 (UTC)
Goto Top
Ach so, das liegt meist an der CursorLocation der Connection (ODBC)
Binding a Form to an ADODB Command
How to bind Microsoft Access forms to ADO recordsets

p.s. ich fühle mich an meine ersten Erfahrungen und Stolpersteine mit Access zurück erinnert face-smile

An deiner Stelle würde ich von Access weg gehen und es mit Web-Interfaces zusammenbauen. Access ist eine Sackgasse was Cross-Platform angeht, und von der Zuverlässigkeit ganz zu schweigen, da kann ich dir Geschichten erzählen die dir die Haare zu Berge stehen lassen würden.
Member: Aximand
Aximand Aug 24, 2018 at 11:38:25 (UTC)
Goto Top
.CursorLocation = adUseClient

das fehlte - läuft ^^

irgendwie ist Access doch deutlich anders zu Excel. Ich komm mir vor wie ein nerviges kleines Kind, das dauernd nach seiner Mutter schreit "wie geht das?"

THX!
Member: Aximand
Aximand Aug 24, 2018 at 11:44:25 (UTC)
Goto Top
Öhm, unser ERP-System nutzt als Frontend Access - von daher ^^
Member: Aximand
Aximand Aug 24, 2018 at 11:52:09 (UTC)
Goto Top
Da die Darstellung jetzt läuft komm ich zur nächsten Hürde....

Wenn ich auf QS OK klicke, dann soll jetzt erst einmal testweise eine Nachricht ausgegeben werden, später

Private Sub cbOK_Click()
MsgBox " Klick erfolgt"  
End Sub

Allerdings lässt sich da nix klicken???
view
Member: colinardo
colinardo Aug 24, 2018 updated at 15:30:24 (UTC)
Goto Top
Allerdings lässt sich da nix klicken???
Glaskugel polier... Du hast keinen PrimaryKey in der SQL-Tabelle definiert, dann will Access nämlich in den Readonly Mode. Bin ich auch schon mal drüber gestolpert und testweise kann ich das auch bestätigen.
https://access-programmers.co.uk/forums/showthread.php?t=216733
Member: Aximand
Aximand Aug 27, 2018 at 05:23:42 (UTC)
Goto Top
Guten Morgen,

es ist/war ein View. Ich denke, dass es daran liegt, dass ich den View, der x Tabellen einbezieht eben nicht aktualisieren kann.
Ich hab mir wie folgt geholfen:

Die Abfrage der Sicht in eine lokale AccessTabelle ziehen und das Formular mit Bezug zur lokalen Tabelle aufbauen. Das funktioniert so weit ganz gut.