Próbuję uzyskać stary kod VB6 do pracy z SQL Server Compact.VB6 ADODB.Recordset Właściwość RecordCount zawsze zwraca -1
Mogę się połączyć, otworzyć bazę danych i wszystko wygląda dobrze. Mogę uruchamiać polecenia wyboru insertów, które działają.
Jednak właściwość RecordCount ADODB.Recordset zawsze zwraca -1, mimo że mogę uzyskać dostęp do pól i zobaczyć dane. Zmiana CursorLocation = adUseClient powoduje problem podczas wykonywania SQL (błędy generowane przez operacje wieloetapowe).
Option Explicit
Private Const mSqlProvider As String = "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;"
Private Const mSqlHost As String = "Data Source=C:\Database.sdf;"
Private mCmd As ADODB.Command ' For executing SQL
Private mDbConnection As ADODB.Connection
Private Sub Command1_Click()
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Dim DbConnectionString As String
DbConnectionString = mSqlProvider & _
mSqlHost
Set mDbConnection = New ADODB.Connection
mDbConnection.CursorLocation = adUseServer
Call mDbConnection.Open(DbConnectionString)
If mDbConnection.State = adStateOpen Then
Debug.Print (" Database is open")
' Initialise the command object
Set mCmd = New ADODB.Command
mCmd.ActiveConnection = mDbConnection
mCmd.CommandText = "select * from myTestTable"
mCmd.CommandType = adCmdText
Set rs = mCmd.Execute
Debug.Print rs.RecordCount ' Always returns -1 !!
Debug.Print rs.Fields(0) ' returns correct data for first row, first col
Debug.Print rs.Fields(1) ' returns correct data for first row, 2nd col
Debug.Print rs.Fields(2) ' returns correct data for first row, 3rd col
End If
End Sub
Wszelkie porady będą z wdzięcznością przyjęte.
wypróbowano obie metody i nie udało się wykonać "wybierz * z myTestTable ". Nawiasem mówiąc, jeśli otworzę sdf przez Sql Server Management Studio 2008 sql działa i zwraca 11 wierszy. – Belliez