2011-02-01 14 views
2

SaveAsText(およびその他のバージョン管理関連の質問に関連しています)に関するこの質問をすべて読んでいます。MS Access SaveAsTextとクエリ(具体的にはストアドプロシージャ)の使用

これまでのところ最も有用なのはthis one.私はオブジェクトをテキストファイルとして保存するために、Oliverの回答で投稿されたVBScriptコードをわずかに変更したバージョンを使用しています。私のアプリケーションは.adpであり、データベース(明らかにストアドプロシージャを含む)はSQL Server 2005です。

このコードをVBScriptに追加しようとしましたが、私は一貫して「あなたはキャンセルしましたSaveAsText行がヒットしたときの「前の操作」を示します。 this questionでの応答に基づいて

For Each myObj In oApplication.CurrentData.AllStoredProcedures 
    WScript.Echo " " & myObj.fullname 
    oApplication.SaveAsText acQuery, _ 
          myObj.fullname, _ 
          sExportpath & "\" & myObj.fullname & ".sql" 
    dctDelete.Add "RE" & myObj.fullname, acQuery 
Next 

、私は、ファイルの先頭に

Const acQuery = 1 

を追加することを確認しました。

また、このコード

For i = 0 To oApplication.CurrentDatabase.QueryDefs.Count - 1  
    oApplication.SaveAsText acQuery, _ 
          oApplication.CurrentDatabase.QueryDefs(i).Name, _ 
          sExportpath & "\" & db.QueryDefs(i).Name & ".sql" 
Next i 

は動作しませんでしたが、私はそれがとにかく.MDB、ない.ADPのために意図していたと信じています。 StoredProcedures(およびビューやテーブル定義、私たちはそこにいる間に)をテキストファイルにエクスポートするためのソリューションはありますか?

答えて

3

おそらくmdbとadpとは関係ありません。 mdbで次のように試してみると、同じエラーメッセージが表示されます。

MsgBox Application.CurrentData.AllStoredProcedures.Count 

私は、MS AccessがSQLデータベースの基本構造がわからないため、それがそうしていると思われます。そして本当に、それはなぜ気にしなければならないのですか?そして、DBがあなたのアプリにそれを見せてくれるのはなぜでしょうか?ストアドプロシージャはDB側で完全に実行され、MS Accessアプリケーションについては何も知らず、ビューはデータのビュー(または表示)です。私の知る限り、あなたはMS Access内から操作することはできません。

あなたがしようとしていることは、データベースを再作成するために必要なsqlスクリプトのエクスポートを自動化し、何らかのバージョン管理システムに格納することです。 Serverfaultの人々は、そのための便利なソリューションを持っているかもしれません。

SaveAsTextに関しては、残念ながら、文書化されていない方法です。私は

''... 
Dim db As Database 
Set db = CurrentDb() 

Dim Qry As QueryDef 
For Each Qry In db.QueryDefs 
    strObjectName = Qry.Name 

    If Not (strObjectName Like "~sq_*") Then 
     Debug.Print " - " & strObjectName 

     Application.SaveAsText acQuery, strObjectName, _ 
          MY_PATH & "queries_" & strObjectName & ".txt" 
    End If 
Next 
''... 

テーブル定義のは少し異なる(SaveAsText/LoadAsTextが正常に動作させることができなかった)

For Each Tbl In db.TableDefs 
    If Tbl.Attributes = 0 Then 'Ignores System Tables 
     strObjectName = Tbl.Name 

     Debug.Print " - " & strObjectName 

     Application.ExportXML acExportTable, strObjectName, , _ 
         MY_PATH & "tables_" & strObjectName & ".xsd" 

    End If 
Next 
たクエリ

をエクスポートするために、次を使用しました
関連する問題