- ベストアンサー
oracle8に接続Access97での質問
- Access97のフォーム上でoracleのテーブルからデータを呼び出す方法を教えてください。
- IDコードの後半の4桁をAccess97のテキストボックスに表示させる方法を教えてください。
- Access97のフォーム上で登録するときに後半の4桁だけをテキストボックスに入力し、oracleに8桁でデータを保存する方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>oracleのデータはAccess上のフォームに読み込まれてるので接続はできていると思われます。VBAはまだやりはじめたばかりです。oracleのテーブルのデータはAccessでSQL文を書き、読み込んでます。 と言うことは列単位に取得できているって事ですね。 すると >>フォーム上に仮としてoracle上のIDコードをコントロールソースとしたテキストボックスを作ります。 > これがよくわかりません。 これはODBCでテーブルリンクしていると思ったので記載しました。直接oo4oで取得されているのでしたら必要有りません。 >>フォームのレコード移動時のイベントで連結しているテキストから右側4桁の文字列を代入します。 > これもわかりません。 そのために >>これはあくまでフォームとテーブル(クエリー)が連結されている場合です。SQL等でVBA内で取得している場合は取得後に編集して代入すれば良いですね。 と記載してあります。 連結していないのならレコード移動時のイベントではなくレコードをSQLで読み込んだ後にright関数で編集しましょうと言う意味です。 これが#1で書いた me.text1 = Right(me.text0, 4) の部分です。me.text0の右側4桁をme.text1のコントロールに入れろと言う意味です。このme.text0をSQLより取得した文字列にすれば該当のテキストボックスに右側4桁が表示されます。 各項目を読み込んで画面にセットするときにIDの項目に right(rs!ID,4)を代入すれば数値部の4桁を表示できますね。 >left関数って何ですか? このぐらいはヘルプで調べてください。AccessVBAのヘルプはインストールされていますか?leftは左側から何文字という関数です。Rightの反対です。 格納時は InsertするときにIDの項目を編集すれば良いですね。そのために IDの左側4桁 & 入力されたIDの番号でセットすればいい訳です。
その他の回答 (2)
- Te-Sho
- ベストアンサー率52% (247/472)
>ものすごい初心者のため、いまいちよくわかりません。どこがわからないと聞かれてもそれもよくわかりません…すみません…より詳しくお願いします。わがままゆってすみません。ちなみフォームとテーブルは連結されていません。 まず、Oracleのテーブルはどのように接続しますか? OO4O?ODBC? ODBCで接続した場合にレコードの取得は?テーブルのリンク?パススルークエリー? テーブルとフォームがレコードソースで連結されていないと言うことはAccessのフォームオブジェクトを使ったデータの制御はせず、SQLでデータの読み込み、追加・更新を行うと言うことでしょうか? ご質問の内容からその辺りはクリアされていると思いお答えしたのですが? それではまず始めにお聞きします。Oracleのテーブルを読み込む方法はお分かりですか?VBAはお分かりですか? どの辺りから説明して良いのか分かりません。 >Access97のフォーム上にoracleのテーブルからデータを呼び出したいのです。 の部分を知りたいのでしょうか?
お礼
>フォーム上に仮としてoracle上のIDコードをコントロールソースとしたテキストボックスを作ります。 これがよくわかりません。 >フォームのレコード移動時のイベントで連結しているテキストから右側4桁の文字列を代入します。 これもわかりません。 >これでフォームに関連しているレコードが移動するたびにそのレコードが取得できます。 右側の4桁を表示したかったらテキストボックスかラベルを用意してleft関数で左4桁を取得しテキストボックスに代入するか、ラベルのCaptionプロパティにセットすれば表示できます。 left関数って何ですか?
補足
oo4oにより接続しています。 oracleのデータはAccess上のフォームに読み込まれてるので接続はできていると思われます。VBAはまだやりはじめたばかりです。oracleのテーブルのデータはAccessでSQL文を書き、読み込んでます。
- Te-Sho
- ベストアンサー率52% (247/472)
フォーム上に仮としてoracle上のIDコードをコントロールソースとしたテキストボックスを作ります。もし表示する必要が無ければテキストボックスの可視をfalseにしておけば良いですね。そうすればこのテキストボックスへの参照が可能になります。このテキストボックスの名前をtext0とします。 次に表示用のテキストボックスを作ります。ここではtext1と言う名前にします。 Private Sub Form_Current() If IsNull(me.text0) = False Then me.text1 = Right(me.text0, 4) End If End Sub フォームのレコード移動時のイベントで連結しているテキストから右側4桁の文字列を代入します。 これでフォームに関連しているレコードが移動するたびにそのレコードが取得できます。 右側の4桁を表示したかったらテキストボックスかラベルを用意してleft関数で左4桁を取得しテキストボックスに代入するか、ラベルのCaptionプロパティにセットすれば表示できます。 これはあくまでフォームとテーブル(クエリー)が連結されている場合です。SQL等でVBA内で取得している場合は取得後に編集して代入すれば良いですね。 Private Sub text1_AfterUpdate() Me.text0 = "gggg" & Me.text1 End Sub もし入力内容をテーブルに格納する場合はテキストボックスが変更されたら頭の4桁を連結して元のテキストボックスに代入すれば反映されます。この"gggg"が可変でAccess側では更新しないと言うことでしたら読み込んだときにclass変数として退避しておくか、表示用に作ったテキストボックスやラベルから取得すれば良いです。
補足
ものすごい初心者のため、いまいちよくわかりません。どこがわからないと聞かれてもそれもよくわかりません…すみません…より詳しくお願いします。わがままゆってすみません。ちなみフォームとテーブルは連結されていません。
お礼
ようやくできました!大変ありがとうございました。本当にご迷惑をおかけした上に親切な説明ありがとうございました!とても勉強になりました。