サーバー入れ替え後、Access VBAの一部の記述でエラーが発生します

Anonymous
2024-03-24T11:31:17+00:00

お世話になります。

サーバー側:Windows Server 2016とMicrosoft SQL Server 2016、

クライアント側:Windows11(または10)とAccess2016の環境で

Access VBAで組んだシステムを運営しており、

問題なく動作しておりましたが、

新しいサーバーを購入し入れ替えたところ

システムのところどころにエラーが発生し動作しなくなり困っております。

ご教授いただければ幸いです。

<エラー内容(一部)>

①フォームロード時

「実行時エラー -2147352567(80020009)

指定した式には値がありません。」

If Nz(ファイル名) <> "" Then

※デバッグすると、上記のラインでエラーが出ます

②リンクテーブルにデータ更新時

「パラメータが少なすぎます。1を指定してください。」

Public Function pullXptRowguid(strMoto As String, strSaki As String, Optional strWhere As String) As Integer

On Error GoTo errshori

Dim DB As Database 

Dim fdsSaki As DAO.Fields 

Dim fldSaki As DAO.Field 

Dim SQL As String 

Dim SQL1 As String 

Dim SQL2 As String 

Set DB = CurrentDb 

Set fdsSaki = DB.TableDefs(strSaki).Fields 

For Each fldSaki In fdsSaki 

    If fldSaki.Name &lt;&gt; "rowguid" Then 

        SQL1 = SQL1 & fldSaki.Name & "," 

        SQL2 = SQL2 & strMoto & "." & fldSaki.Name & "," 

    End If 

Next 

SQL1 = Left$(SQL1, Len(SQL1) - 1) 

SQL2 = Left$(SQL2, Len(SQL2) - 1) 

SQL = "INSERT INTO " & strSaki & " (" 

SQL = SQL & SQL1 & ") SELECT " & SQL2 & " FROM " & strMoto 

If strWhere &lt;&gt; "" Then 

    SQL = SQL & " WHERE " & strWhere 

End If 

DB.Execute SQL 

DB.Close 

Set DB = Nothing 

Set fdsSaki = Nothing 

Set fldSaki = Nothing 

pullXptRowguid = -1 

Exit Function 
```errshori: 

```ruby
MsgBox Err.Description 

pullXptRowguid = 0 
```End Function 

※DB.Execute SQLの部分でエラーが出ます。 

<変更前の環境> 

サーバー:Windows Server 2016 Standard(64bit) 

SQLサーバー:Microsoft SQL Server 2016 Standard(64bit) 

Office:Microsoft Office Home and Business 2016(32bit) 

Access:Microsoft Access Runtime 2013(32bit) 

<変更後の環境> 

サーバー:Windows Server 2022 Standard(64bit) 

SQLサーバー:Microsoft SQL Server 2022 Standard(64bit) 

Office:Microsoft Office Home and Business 2016(32bit) 

Access:Microsoft Access Runtime 2016(32bit) 

<Access VBAのコード記述> 

20年前程に外注先にシステム構築を依頼し、そのまま使用しています。 

(外注先は既に廃業しています。) 

<参照設定> 

・Visual Basic For Applications 

・Microsoft Access 16.0 Object Library 

・OLE Automation 

・Microsoft ActiveX Data Objects 2.1 Library 

・Microsoft Excel 16.0 Object Library 

・Microsoft Office 16.0 Access database engine Object Library 

・Microsoft Visual Basic for Applications Extensibility 5.3 

ご教授いただければ幸いです。   
以上、よろしくお願いいたします。
開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません
{count} 件の投票
質問作成者が受け入れた回答
  1. Anonymous
    2024-03-25T04:25:13+00:00

    > 20年前程に外注先にシステム構築を依頼し、そのまま使用しています。 > (外注先は既に廃業しています。)

    ならば「個々のエラー箇所に関しては答えようがない」ということを
    前提にするとして。

    > 新しいサーバーを購入し入れ替えたところ > システムのところどころにエラーが発生し動作しなくなり困っております。

    まず新しい SQL Server データベースとの接続に問題がないかどうかを
    確認されることが最優先事項でしょう。

    例えばリンクテーブルを使用されているのであれば、
    リンクテーブルマネージャーなどを使用して
    全てのリンクテーブルのリンク先の変更や再更新を行う必要があります。

    またそのデータベースを参照するパススルークエリを使用している場合は
    [ODBC 接続文字列]プロパティの再設定も必要です。

    > ①フォームロード時 > 「実行時エラー -2147352567(80020009) > 指定した式には値がありません。」

    そのフォームのレコードソースが SQL Server データベースを
    リンク先とするリンクテーブル(またはリンクテーブルを
    参照する選択クエリ)である場合も同様。

    > ②リンクテーブルにデータ更新時 > 「パラメータが少なすぎます。1を指定してください。」 > DB.Execute SQL

    それらの問題を解決した上で、変数 SQL に格納された文字列
    (動的に生成された INSERT INTO 文)が実行可能な SQL 文であるか
    否かを精査しなければならないでしょう。

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません

4 件の追加の回答

並べ替え方法: 最も役に立つ
  1. simo-k 67,350 評価のポイント ボランティア モデレーター
    2024-03-24T11:35:53+00:00

    VBA(マクロ)の公式サポート場所は、海外コミュニティとなっています。

    有識者が集まっている所の方が、適切なアドバイスを受けやすいでしょう。

    Stack Overflow(VBA)

      [VBA プログラミングに関する質問]

      Stack Overflow には、説明的なタイトル、完全で簡潔な問題ステートメント、問題を再現する
      ための十分な詳細の要求などのガイドラインがあることに注意してください。
      機能要求または過度に広範な質問は、トピック外と見なされます。
      新しいユーザーの場合は、Stack Overflow ヘルプ センター にアクセスして詳細を確認して下さい。

    ※ 閲覧者・回答者が多い公式サポートサイトをお勧めします。

      英語で質問を送信してください。

    0 件のコメント コメントはありません
  2. Hebikuzure aka Murachi Akira 301.3K 評価のポイント MVP ボランティア モデレーター
    2024-03-24T11:37:50+00:00

    20年前程に外注先にシステム構築を依頼し、そのまま使用しています。

    (外注先は既に廃業しています。)

    そういうことであれば、Access VBA 開発に実績のある IT ベンダーに相談された方が良いように思います。

    0 件のコメント コメントはありません
  3. Anonymous
    2024-03-25T08:44:36+00:00

    simo-k様、Hebikuzure様、sk.exe様

    ご教授いただきありがとうございます。

    頂いた情報をもとに検証を進めて行きます。

    ②リンクテーブルにデータ更新時

    「パラメータが少なすぎます。1を指定してください。」

    について、自己解決しましたのでご報告させていただきます。

    (レプリケーションを解除した後、rowguidフィールドが残った状態で
     再度パブリケーションを掛けたところ、rowguidフィールドがもう一度作られてしまい

     ローカルのワークテーブルとフィールドが不一致になったことが原因でした。)

    > まず新しい SQL Server データベースとの接続に問題がないかどうかを
    > 確認されることが最優先事項でしょう。

    > 例えばリンクテーブルを使用されているのであれば、
    > リンクテーブルマネージャーなどを使用して
    > 全てのリンクテーブルのリンク先の変更や再更新を行う必要があります。

    リンクテーブルを使用しており、リンク先の再更新は行っておりました。

    Accessのオブジェクトウィンドウから直接リンクテーブルを開き

    追加、編集、削除等は出来る状態です。

    0 件のコメント コメントはありません
  4. Anonymous
    2024-03-27T07:00:16+00:00

    VBAの記述を変更し、自己解決しました。

    ご教授いただきました方々、ありがとうございました。

    0 件のコメント コメントはありません