Results 1 to 7 of 7

Thread: Access2007のフォームを開く方法について

  1. #1
    Member
    Join Date
    2008-12
    Posts
    4
    Login to Give a bone
    0

    Default Access2007のフォームを開く方法について

    こんな質問をして良いのか?と思いつつ、神頼みで、、

    AutoCAD2008の図面上にある文字 ABC をダブルクリックしたときに、MS-Access2007の
    AAA.mdb を開き、その中にあるフォーム BBB を開き、フィールドCCC中でABCと一致する
    レコードを表示するものを作成したいのです。

    AutoCADのVBAをはじめてトライしているのですが、まったくのお手上げです。
    AutoCAD LTとAccessを使って同様のことは、Access側よりコントロールする形で
    作成したことがあります。

    そこで、上記のうち、AutoCAD2008の図面上にある文字をダブルクリックしたときに、MS-Access2007のAAA.mdb を開き、その中にあるフォーム BBB を開く部分を
    ご指導いただけないでしょうか?これがわかれば、それをヒントにできそうです。

    また、このような問題を解決するに適した
     ・資料・本・掲示板などございましたら、紹介してください。
    よろしくお願いいたします。

  2. #2
    Active Member u2's Avatar
    Join Date
    2000-12
    Posts
    89
    Login to Give a bone
    0

    Default Re: Access2007のフォームを開く方法について

    質問に質問で返してもうしわけありませんが、

    ● 文字 ABC をダブルクリック・・・
     文字を選択してダブルクリックだと思いますが、ダブルクリックでないといけませんか?
     AutoCAD 本来のダブルクリックの動作、文字ならテキスト編集などの機能を置き換えますか?

     → ふつうはあるコマンドを作成して、そのコマンドを実行して文字図形を選択するという動作になります。

    ● MS-Access2007のAAA.mdb を開き
     Access を開く必要がありますか? AutoCAD も Access も起動して表示している状態を実現する必要があるのですか?

     → レスポンスをよくするなら Access のDB を ADO などを利用して開きます。フォームもAutoCAD VBA 側で作成します。
       どうしても両方、起動している状態が必要なら、AutoCAD の VBA から Access をActiveX オートメーションで使います。おすすめはできません。

     可能ならプログラム全体の設計を見直したらいかがでしょう?

     参考書はAutoCAD VBA なら大浦誠さん著の

    「AutoCAD 2000 VBA入門」ですが、入手はできないかも。

     またこれから先は「日本語 - プログラミング (Programming)」フォーラムに場所を移して、続けましょう。

  3. #3
    Member
    Join Date
    2008-12
    Posts
    4
    Login to Give a bone
    0

    Wink Re: Access2007のフォームを開く方法について

    Yuji Suzuki さん

    スピーディーなレスをいただきありがとうございます。

    ・今回は、AtutoCADとAccessを両方開きたいのです。

    ご指摘の通りに
    フォーラムをプログラミングに移動して続行していきたいと思います。
    ありがとうございました。

  4. #4
    Member
    Join Date
    2008-12
    Posts
    4
    Login to Give a bone
    0

    Unhappy Re: Access2007のフォームを開く方法について

    フォーラム「日本語-AutoCAD」よりこちらに質問を移動しました。

    こんな質問をして良いのか?と思いつつ、神頼みで、、

    AutoCAD2008の図面上にある文字 ABC をダブルクリックしたときに、MS-Access2007の
    AAA.mdb を開き、その中にあるフォーム BBB を開き、フィールドCCC中でABCと一致する
    レコードを表示するものを作成したいのです。

    AutoCADのVBAをはじめてトライしているのですが、まったくのお手上げです。
    AutoCAD LTとAccessを使って同様のことは、Access側よりコントロールする形で
    作成したことがあります。

    そこで、上記のうち、AutoCAD2008の図面上にある文字をダブルクリックしたときに、MS-Access2007のAAA.mdb を開き、その中にあるフォーム BBB を開く部分を
    ご指導いただけないでしょうか?これがわかれば、それをヒントにできそうです。

    また次項につきましてもアドバイスをいただけたらと思っています。
    既にAccessによるデータベースが完成しているために、上記のようなシステムを構築しようと
    しているのですが
     ①Accessで作成したテーブル、フォーム、クエリー、レポートやそれらに付随するVBAは
       簡単にAutoCADの方に移植できるのでしょうか?
     ②AutoCAD上の文字をクリックまたは、ダブルクリックしたときに、前記のような動作を
      させたいのですが、これは、難しいのでしょうか?
      当初、今もなのですが、ダブルクリックイベントなどで比較的簡単に実現できると
      思っているのですが。ひょっとしたら、そんなイベントプロシジャーがないのでしょうか?
     ③Accessを開かなくともAccessで既に作成したテーブルやフォームにAutoCADより
      アクセスできるのでしょうか?具体的なコードをご指導いただけないでしょうか?

    おそらく、初歩的な質問だと恐縮しますが、初めての経験で四苦八苦している状態
    なのです。
    よろしくお願いいたします。

  5. #5
    AUGIjp Auditor nakajihy's Avatar
    Join Date
    2001-08
    Location
    Tokyo Japan
    Posts
    141
    Login to Give a bone
    0

    Wink Re: Access2007のフォームを開く方法について

    スレッドを移動、および結合させて頂きました。
    よろしくお願い致します。

  6. #6
    Active Member u2's Avatar
    Join Date
    2000-12
    Posts
    89
    Login to Give a bone
    0

    Default Re: Access2007のフォームを開く方法について

    それでは今年もよろしくお願いいたします。
    まず

    ● 図面上のダブルクリックで何かする・・・
     しつこいようですが、本来の AutoCAD の動作と重なるのでお勧めではありませんが、図面編
    集を伴わない、何か専用のシステムならありうるとして、

    BeginDoubleClick イベントを使います。
    使用例は VBA の Help で BeginDoubleClick イベントをご覧ください。

    ● 正しい作法はあるコマンドを実行して図形を選択すると何かする・・・というものです
    ThisDrawing.Utility.GetEntity returnObj, basePnt, "文字列を選択: "
    などのコードで実現します。

    ● AutoCAD の VBA からACCESSを実行するのは
    AutoCAD 側の VBA で Acccess のオブジェクトライブラリを参照設定するだけです。
    Access の VBA の記述そのままで、AutoCAD側から使えます。この仕組みを
    ActiveX Automation といいます。

    Set AccessAppObj = New Access.Application
    で Access オブジェクトを取得します。

    ● ACCESS を開かずに Access で作られたデータベースにアクセスする・・・
    これがたぶん正しい方法です。 AutoCAD とは話題が離れますので、ADO などをキーワードに検索してみてください。

    ● またAutoCAD自身に データベースと図形を結合する DBconnect 機能もあります。
    これもひととおり HELP やチュートリアルで確認してみてください。

    ● まぁ正月ですから ADO のサンプルコードもどうぞ

    Sub Att2MDB()
    Dim strMDBpath As String
    Dim strTableName As String
    Dim objEnt As AcadEntity
    Dim objBlkRef As AcadBlockReference
    Dim vntAttributes As Variant

    strMDBpath = "TEST.mdb"
    strTableName = "select top 1 * from テーブルTEST"

    ' ADO を使ってデータベース接続
    Dim objConnection As New ADODB.Connection
    objConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Persist Security Info=False;" & _
    "Data Source=" & strMDBpath
    objConnection.Open
    ' レコードセットの取得
    Dim objRecordset As New ADODB.Recordset
    ' テーブルを開く
    objRecordset.Open strTableName, objConnection, adOpenForwardOnly, adLockOptimistic

    ' 図面上の目的のブロックから属性値をレコードに
    For Each objEnt In ThisDrawing.ModelSpace
    If TypeOf objEnt Is AcadBlockReference Then
    Set objBlkRef = objEnt
    If objBlkRef.Name = "TEST" Then
    vntAttributes = objBlkRef.GetAttributes
    ' レコード追加
    With objRecordset
    .AddNew
    .Fields("ハンドル") = objBlkRef.Handle
    .Fields("品名") = vntAttributes(0).TextString
    .Fields("価格") = vntAttributes(1).TextString
    .Fields("サイズ") = vntAttributes(2).TextString
    .Update
    End With
    End If
    End If
    Next objEnt

    ' データベース接続を閉じる
    objRecordset.Close
    objConnection.Close
    Set objRecordset = Nothing
    Set objConnection = Nothing
    End Sub



     

  7. #7
    Member
    Join Date
    2008-12
    Posts
    4
    Login to Give a bone
    0

    Smile Re: Access2007のフォームを開く方法について

    u2さん ありがとうございました。

    ・ADOサンプルコードを参考に、進めてみます。
     以前は、AutoCAD LT 、MSAccessをAcadRemoconを利用していたのですが
     なんか、一気にハードルが高くなった感じがしています。
    ・CAD上の文字をダブルクリックの件は
     u2さんのご指摘の通り、コマンド実行後、文字を選択しその内容を取得し、
     という方法にしたほうが、良いですね。

    ありがとうございました。
    今後ともよろしくお願いいたします。

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •