• 締切済み

AccessからOracleへのリンクテーブル時の型情報?

Access始めたばかりの初心者です。 現在Oracle10gのデータベースのとあるテーブルを をAccess2000でリンクし、クエリで抽出したものをレポートに表示 しようとしています。 そのテーブル上に、 Oracle上ではVARCHAR2(6バイト)の日付データがあります。 例) 200806 これをAccessのクエリ上で変換し、 "6月" と表示させたいのですが、 なぜかうまくいきません。 Oracle上の項目名が YM だとすると、 Replace(Right([YM], 2), "0", "") & "月" こういった関数でうまくいきそうなものですが・・ もしかしてOracleのVARCHAR2はリンクすると文字列型以外の型として 扱われるのでしょうか・・ どなたかご存じの方、ご教授くださいませ。

みんなの回答

  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.3

Oracle11gとAccess2000で試しました。 (1)オラクルデータ型 SQL> desc xxx 名前 NULL? 型 ------ ------ ------------------------------------ XXX VARCHAR2(6) (2)Accessリンクテーブル XXX テキスト型 (3)SQLの実行結果 SELECT Replace(Right([xxx], 2), "0", "") & "月" FROM SCOTT_XXX; 6月 提示されたSQLは通りましたよ。 上手くいかないとは、どういう事象が発生しているのでしょうか。

kerosin454
質問者

お礼

なるほど、SQLを発行して試すという手がありますね。。 とりあえずSQLをスマートに発行する方法が よくわからなかったのでフォームをひとつ作り、 そこからボタンを押下した時のコールバック関数の中で 上記SQLを発行させてみたところ、 問題ありませんでした。 とすると表示上のエラーかなにかだと思います。 事象はQ2の方の返答で説明させていただきました。 分かりづらくてもうしわけございません。。

kerosin454
質問者

補足

自己解決致しました! どうやらフォームのコントロール識別名とクエリの項目名 が同じだと、表示がうまくいかないようです。 テキストボックス名 :YM クエリの項目名 :YM ↓ テキストボックス名 :日付 クエリの項目名 :YM これでなんとかうまくいきました。 いろいろとお知恵を貸してくださいましてありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

VARCHAR2は文字型です。テーブルをデザイン・ビューで見てください。 >なぜかうまくいきません。 何がどう上手くいかないのでしょう? (1)クエリの実行時エラー  ア.Oracleのエラー  イ.Accessのエラー (2)実行されるが、結果が期待したものと異なる。  ア.どのように異なっているか これによって原因が分かるかも知れません。

kerosin454
質問者

お礼

すいません、 要は「何がわかっていないかわかっていない」 という超初心者状態です。。 ええと (1)オラクルのリンクテーブルを作成(仮にTBLという名前にする) (2) TBL からデータを抽出するクエリを作成 (3) クエリの結果をレポートで表示   その際、200806 を6月と表記したいため、   レポートにはりついているエディットボックス?   のようなものの中に関数を・・   それが   Replace(Right([YM], 2), "0", "") & "月"   です。実行するとその領域が #Error となります。 そうとうイライラされるかと思いますがご容赦ください。。   

全文を見る
すると、全ての回答が全文表示されます。
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

access2000ではクエリのSQLで直接replace関数を使えなかった気がします。 MDBのモジュールで Public Function myreplace(source, str1, str2) myreplace = Replace(source, str1, str2) End Function という関数を定義して myeplace(Right([YM], 2), "0", "") & "月" でやってみてください。

kerosin454
質問者

補足

ご回答ありがとうございます! >access2000ではクエリのSQLで直接replace関数を使えなかった気がします。 そ、そんな仕様があるのですね。。 了解しました。 ちょっとやってみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • AccessでOracleのテーブルをリンクし、Access側では読み取り専用にしたい

    社内にOracleデータベースでのシステムが立ち上がっているのですが、管理帳票の出力用に、OracleのデータをAccessで読み込みたいと思っています。 テーブルのリンクそのものは知っており、成功しているのですが、Oracleデータベースのデータを壊さないようにするため、このリンクテーブルを読み取り専用にしたいと思っています。どのようにすれば良いでしょうか。 なお、Oracle側で読み取り専用ユーザを作成して、そのユーザでリンクすれば良いことは理解していますが、それは最後の手段にしたいと思っています。別の方法でうまくできないでしょうか。

  • オラクルテーブルで受け付けない文字

    ACCESS97のデータベースで オラクルのテーブルを使用しています。 アクセスのテーブルではクエリーが実行できたのですが (実行時に読込めた) 名前を変更して、(リンクしている)オラクルテーブルで実施すると 上手く行きません。 オラクルテーブルでは、受けつけない文字があると聞いたことがあります。 例えば、 " や ' など。 このような文字 一覧がわかるページ等 ないでしょうか? 

  • アクセスにオラクルのテーブルをリンク

    アクセスでオラクルのテーブルを ODBCでリンクしたいのですが そのとき オラクルのユーザー名を 例えば USERNAME で リンクしたいテーブルを TABLE1 として、 リンクすると アクセス 上では  USERNAME_TABLE1 と言う様に ユーザ名 + テーブル名 になってしまいます。 使用したいのは テーブル名だけなので できれば ユーザ名がつかないでリンクしたいのですが、そう言う事はできないのでしょうか?  テーブルの量がたくさんあるので あとから名前を変更するのが大変なんです・・・  

  • AccessからOrcleのODBCリンクテーブルへの挿入

    OS:XPpro Access:97,2000 Oracle:7 AccessからOracleのODBCリンクテーブルに対して追加クエリを実行すると、 ODBC--リンクテーブル'テーブル名'への挿入に失敗しました。 [Oracle][ODBC Oracle Driver][Oracle OCI]ORA-01461: can bind a LONG value only for insert into a LONG column.(#1461) というエラーが発生します。 メモ型のフィールド'A'をvarchar2(4000)のフィールド'B'に追加する部分で、LeftB(A,4000)としている部分がうまく行かないようようなので、LeftB(A,3000)と丸めてあげると通ります。 質問を纏めますと、 1.varchar2(4000)となっていても、4000Byteのデータを挿入することはできないのでしょうか。 2.発生しているエラーは、私の考えとは別の問題なのでしょうか。 ご回答よろしくお願いします。

  • AccessからORACLEへのリンク設定について教えてください

    初心者ですが仕事でORACLEとAccessを使っています。 ORACLEのメンテナンスのため、ORACLEのテーブルにAccessからリンクを設定しようとしましたが、下記エラーになります。 「システムで予約されているエラー(-7778)です。このエラーへのメッセージはありません。」 Accessの方はORACLEクライアントがインストールしているパソコンで使っていて、そのパソコンの業務ソフトは問題なく動いてORACLEからデータを出し入れしています。  使用しているソフトはORACLE7.3.4とAccess2000です。 この場合の対処方法をご存じの方がいらっしゃいましたらお教えください。よろしくお願いします。

  • Accessでテーブルのリンクを新規テーブルに保存

    ExcelのデータをAccessのテーブルでリンクしています。 そのデータをクエリで必要なレコードだけを抽出します。 抽出したデータのみを新規テーブルとして保存したいんですが、保存の仕方がわかりません。 Access2000です。 どうかよろしくお願いします。

  • MS-Accessのリンクテーブルで更新

    MS-Accessのリンクテーブルで更新 MS-Accessのリンクテーブルを使用して、 Oracleデータベースの表に対して 値の更新をしようとしていますが、 更新が競合しているというメッセージが出て、 更新できません。 また、値の更新をしようとしているタイミングで、 Oracleデータベース側のリンクテーブル対象表に アクセスしている処理はなく、 更新が競合していることありません。 ODBCドライバの設定では、読み取り専用設定は 実施してない点は確認しています。 使用しているソフトウェアの各バージョンは以下になります。 Access 2007 Oracle 10.2.0.4.0 WindowsXP SP3 ODBCドライバ 10.02.00.01 リンクテーブルからの更新自体がそもそも出来ないのでしょうか? MS-Accessを使用してOracleデータベースの表の値を更新したいと思っているのですが、 解決方法をご存知の方がいらっしゃいましたら、教えていただけないでしょうか?

  • Oracle10gのテーブルをODBC経由でAccess2002にリンクテーブルをはりたいのに・・・

    Oracle10gのテーブルをODBC経由でAccess2002にリンクテーブルを作成しようとしました。 しかし、「テーブルのリンク」画面に複数あるはずのテーブルが1つしか表示されずリンクテーブルが作成できません。 Oracle9iのテーブルは正しく表示されます。 Access2000の環境下で同様の不具合が発生した人がおり、その人はOffice2000のサービスパック(1・2・3)をあてることで不具合が解消されたそうです。 同様にOfficeXPのサービスパック(1・2・3)をあてたのですが不具合は解消されませんでした。 誰かご存知の方はいらっしゃらないでしょうか。 よろしくお願いします。 動作環境  OS:Windows XP Pro  Oracle Client:10g  Access(Office):2002(XP)

  • odbc接続でaccessのテーブルにリンクを張るには

    オラクルのデータベースからodbc接続でaccessにテーブルをリンクしようとしているのですが、起動した1回だけオラクルのユーザとパスワードがでてきます。ユーザとパスワードをいれずにテーブルをひらくことができるのでしょうか。オラクルのodbcを使っています。odbcの登録にはパスワードを登録するところがありませんでした。

  • ACCESS97で、テーブルリンクを使用すると結果がおかしくなります

    こんにちわ、ご教授よろしくお願いします。 win2000 Office97を使用しています。 ACCESS97でテーブルリンクでデータを抽出して、 クエリーを走らせた場合と、 リンクを一度テーブルに落としてから、 クエリーを走らせた場合とでデータ件数がちがってきてしまいます。 正しい結果は一度テーブルに落としてから、クエリーを走らせた場合が正しい結果が出ました。 97でテーブルリンクを使用する際に なにか注意しなければならないことがあるのでしょうか? 一々、テーブルに落としてからクエリーを走らすにはかなりの数があるので、 できれば、テーブルリンクを使用してクエリーを走らせたいのです。 わかりずらい説明ですが、ぜひとも ご教授お願いします!><

このQ&Aのポイント
  • 自分の見ているものが世界の全てのように思っているが、実際は違うことが多い。
  • 自分の世代や経験に基づいて物事を判断し、他の立場や知識を理解することが難しい。
  • 他の人が自分を理解することや、自分が他の人を理解することは困難であるが、それでも他者と共有することを大切にするべき。
回答を見る