2

タイトルからして、これは何度も何度も回答されているように思えますが、一連の理解できない問題があります。また、投稿を通じて助けを求めるのはこれが初めてなので、言及するのを忘れている可能性があります。

Function update_location_id()

    Dim rs As DAO.Recordset
    Dim db As Database
    Dim strSQL As String

    Set db = CurrentDb
    strSQL = "select id from location"

    Set rs = db.OpenRecordset(strSQL)

    MsgBox (rs.RecordCount)


End Function

レコードを取得できなかった理由を突き止めるためだけに、この関数からほとんどすべてのコードを削除しました。このコードは、「パラメーターが少なすぎます。「set rs =...」行にあると予想されるパラメーターを生成します。

ただし、選択クエリの ID を * に変更すると、正常に動作します。ただし、1 が返されます。これは、現在、locations テーブルに合計 3 つのレコードがあるため、やや混乱しています。

必要な場合に備えて、ロケーションテーブルは次のようになります

id    description
1     "Location 1"
2     "Location 2"
3     "Location 3"

これにより、髪の毛が抜けてしまい、情報を取得するなどの基本的なデータベース操作を実行できないと、プロジェクトを進めることができなくなります。

参考資料: Visual Basic for Applications、Microsoft Access 14.0 オブジェクト ライブラリ、OLE オートメーション、Microsoft Office 14.0 Access データベース エンジン オブジェクト、Microsoft Internet Controls。

4

1 に答える 1

2

通常、テーブルに存在しない列名を使用すると「パラメーターが少なすぎます」というエラーが発生するため、パラメーターとして解釈されます。
したがって、指定されたテーブル データにもかかわらず、テーブル名 (場所) と列名 (id) をもう一度確認します。
「1」に関しては、はい、
rs.MoveLast
rs.MoveFirst
レコードセットを開いた後に挿入して、正しい RecordCount を取得する必要があります。最後のレコードセットに移動する前に、レコードセットはそれが生成するレコードの数を認識していません (この問題には詳細がいくつかありますが、レコードセットの種類などに関して、今は正確には覚えていません)。

于 2012-10-06T11:36:36.020 に答える