Accessのパラメータクエリがうまく動かなくて困ってます。
実はODBC経由でリンクテーブルを作っておりまして、そこからパラメータクエリで抽出を試みたのですが、パラメータは聞いてきますが抽出できません。
選択クエリ状態で直接抽出条件を入れてやれば何の問題もなく通常のテーブルと同様に抽出できるのですが、パラメータクエリにする、または同じ事ですが他のフォームのコントロールを参照させる状態ですと、エラーも出ずにノンデータとなります。
これって何故なんでしょうか?対処方法はありますか?
ちなみにリンク元のテーブルはオラクルですがデータ型とかが関係あるのでしょうか?

このQ&Aに関連する最新のQ&A

とは オラクル」に関するQ&A: オラクルとは?

A 回答 (1件)

抽出するデータ型は何ですか?


日付型じゃないですか?

おそらく、それがPointだと思います。

この回答への補足

やっぱりデータ型が怪しいですかね。
でも抽出するデータ型はテキスト型なんです。
選択クエリ状態だとちゃんと抽出するというのも理解できません。
なぜなんでしょう??

補足日時:2001/08/30 17:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QphpMyAdminでのフィールド削除(クエリ実行)

本当にMySQL初心者なので基本的にコマンドが理解できないのですが、phpMyAdminにてデータベースを管理していますが、一つのテーブルに数千のデータが入っており、例えばID番号1から500までを一気に削除したいと言うときに、最初はローカルにCSVデータをエキスポートして編集した後インポートさせようとしたのですが、文字コードの関係でエラーになってしまい、解決策はクエリでデータを削除するしかないとの結論になりました。
例えばテーブルを指定してからクエリのウィンドウを開くとSELECT * FROM `テーブル名` WHERE 1
とすでに入力されているのですが、これをどのように書き換えれば複数のフィールドをいっぺんに削除できるのでしょうか?
非常に困ってます、アドバイスよろしくお願いします

Aベストアンサー

普通にクエリを書いて実行してください

DELETE FROM `テーブル名` WHERE `ID` BETWEEN 1 AND 500;

QAccessから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.発生しているエラーは、私の考えとは別の問題なのでしょうか。

ご回答よろしくお願いします。

Aベストアンサー

LeftB 関数などは、正しい値を返しません。

http://okweb.jp/kotaeru.php3?q=1450574
こちらに回答しています。

Qアクセスの削除クエリでいいのでしょうか?

 データベースで検索できるようにしたいのですが・・・・。クエリの検索結果をフォームに反映させています。
 検索結果表示後、もう一度検索フォームに戻り、検索をかけたときヒットするデータがないにも関わらず前回の検索結果が表示されたままになってしまいます。
削除クエリを使用すればいいのでしょうか?
 また削除クエリをどのように設定したらいいのでしょうか?(たとえば抽出条件が必要なのでしょうか?)
 この場合、マクロはいったん削除クエリを開き、もう一度クエリを開く設定でいいのでしょうか?分かりにくい質問ですいませんが教えてください

Aベストアンサー

はい、フォームのもとになっているクエリのデータが変わっても、更新行為をしないと反映されません。
具体的には、更新したいフォームに、コマンドボタンウイザードでフォーム→再表示を選択し、「再表示」ボタンを作ってみてください。押すとほら、更新されました。ボタン押し下げ動作を省略したい場合は、たとえば検索画面に戻るボタンがあるとしたら、そのボタンのクリック時イベントに、再表示ボタン内の主要ソースを貼り付ければ用を成すはずです。
但し、サブフォームをご利用の場合など、この方法がふさわしくない場合もあります。
確実に更新するには該当のフォームを閉じて開きなおすことです。マクロを作ってボタン化すれば少々画面がちらつくだけでそう不自然ではありません。
お試し下さい。

Qサイベースには、オラクルのROWNUMと同様のカラムはないのでしょうか?

No.352155で質問をしたものです。
タイトルの通りのことを探しています。
(No.352155を読んで頂けると総合的にやりたいことがわかってもらえると思います)ROWの並び替えをしたいのですが、そのためROWの番号を取得したいのですが、何かオラクルのようにROWNUMのような便利なものはないでしょうか?
もしくは、ROWの番号を割り振りたいのですが、どのようにしたらできますでしょうか?

Aベストアンサー

ここらあたり、参考になるかも:

“6.2.12: Selecting rows N to M without Oracle's rownum?”

参考URL:http://www.faqs.org/faqs/databases/sybase-faq/part14/

Qテーブル削除クエリ

テーブル作成クエリはあるけどテーブル削除クエリはないのでしょうか?
ADOXで削除するしかないですか?

Aベストアンサー

クエリーのSQLビューで、下記の様なSQLを入力して保存すると、一種のテーブル削除クエリができますね。
DROP TABLE Table1;
データベースウィンドウで右クリックする方が早そうな...
VBAからなら、下記で実行できました。ご参考まで。
Sub Sample()
DoCmd.SetWarnings False
DoCmd.OpenQuery "Q_Table1削除"
DoCmd.SetWarnings True
End Sub

Qパラメータクエリで抽出がうまくいきません。

選択クエリにて、ある日付から今日までの日付をdateiff関数で求め、
それを、DateDiff("m",[最終交換日],Date())という形で、何ヶ月経ったか表示しています。
そこまでは問題なかったのですが、
このクエリをパラメータで条件指定させようとするとうまくいきません。

たとえば、選択クエリのデザインビューで、抽出条件に、>=9、と直接入力すると、
9ヶ月以上のレコードを抽出するのですが、
>=[何ヶ月以上経ったものを探しますか?]と入力し、
パラメータ入力のウィンドウで9を入力すると、抽出されません。
どの数値を入力しても、直接入力ではうまくいくのですが、
パラメータウィンドウから入力するとダメのようです。

いろいろ参考になりそうサイト等見てはみましたが、
原因となりそうなものを見つけることができませんでした。
これが原因では?と、お分かりになる方、
是非教えていただきたく思い、質問いたしました。
よろしくお願いいたします。

Aベストアンサー

[何ヶ月以上経ったものを探しますか?]
の部分が文字型として扱われてしまっているみたいですね。( 文字型で比較すると "10" < "9" なので、9 を入力しても 10 ヶ月のレコードは表示されない。)

>= CInt([何ヶ月以上経ったものを探しますか?]

のようにするとうまくいくようです。

QAccessの削除クエリについて

『先月分のデータを全て削除』という削除クエリを作りたいのです。
本を見ても、
『指定した日の○日前の分までのデータを削除する』はあるのですが・・・・。

例えば、
5月5日にクエリを実行しても、5月10日にクエリを実行しても、4月30日以前のデータが削除されて欲しいのですが。
よろしくお願いいたします。

Aベストアンサー

>『先月分のデータを全て削除』
ということであれば下記条件で削除クエリを作成
すればできます。
---
フィールド:式:Month([対象日付フィールド])
抽出条件:Month(DateAdd("m",-1,Now()))

Q複数のテーブルから複数条件で新規テーブルへ抽出するには?

こんにちわ。

Windows2000、Access2000という環境下で、
住所録の統合をしようとしています。

簡単な構成は、前任者が、グループ関連会社別に住所録のmdbを作っており、各テーブルのフィールドで主要なものは、「通し番号(各mdbごと)」「氏名」「会社名」「住所」です。

ここで、最終的にテーブルを一つにまとめれば完了としたいところなのですが、
2002年夏の時点での住所録A.mdb
2003年冬の時点での住所録B.mdb
2003年春の時点での住所録C.mdb
とあり、それぞれにBの時点での新規入力・(住所等の)更新、Cの時点での新規入力・更新があるのです。
BはAを元に作られており、CはBを元に作られています。
ダブっている部分があるのです。

そこで、AとBを比較してAの中で「氏名」、「会社名」が同じもの以外と、Bのデータを新しいDBのテーブルへ、
新しくできたDBのテーブルとCのテーブルとを比較して、「氏名」「会社名」が同じものは、既存のレコードを消去してCのデータを追加するということをやりたいのです。
つまり、BやCでの更新・新規入力をうまく反映させた形の住所録にしたいのです。
Access自体の使い方に不慣れなもので、この作業がAccessのクエリ等の組み合わせでできるのか、それともSQLやVBAを駆使しないと無理なのかの判断もつきません。

どなたか参考になりそうな操作やSiteを知っていましたら、
教えてください。
よろしくお願いします。

こんにちわ。

Windows2000、Access2000という環境下で、
住所録の統合をしようとしています。

簡単な構成は、前任者が、グループ関連会社別に住所録のmdbを作っており、各テーブルのフィールドで主要なものは、「通し番号(各mdbごと)」「氏名」「会社名」「住所」です。

ここで、最終的にテーブルを一つにまとめれば完了としたいところなのですが、
2002年夏の時点での住所録A.mdb
2003年冬の時点での住所録B.mdb
2003年春の時点での住所録C.mdb
とあり、それぞれにBの時点での新規入力・(住所等...続きを読む

Aベストアンサー

その3つのテーブルはフィールド構造は一緒でしょうか?
一緒ならUNIONクエリーを作成したら良いのではないでしょうか。

例えばテーブルA、B、Cがあって、いずれも名前、住所というフィールドがあるとしたら
=操作方法=
1.クエリーをデザインビューで新規作成します。
2.テーブルの表示は、なにも選択せず閉じます。
3.画面左上のファイルメニューの下にSQLというボタンが出来ているはずです。
4.クリックするとSQLウインドが表示されます。SELECT;のみが表示されていると思います。
5.下記のようなSQL文を入力します。
===============================
SELECT A.名前,A.住所
FROM A
UNION SELECT B.名前,B.住所
FROM B
UNION SELECT C.名前,C.住所
FROM C;
===============================
重複データを省く述語DISTINCTを使用しなくても、おそらく重複データがある場合自動的に併合されると思います。
されなければHELPでDISTINCTの使い方を調べてSQL文を書き換えて見てください。

その3つのテーブルはフィールド構造は一緒でしょうか?
一緒ならUNIONクエリーを作成したら良いのではないでしょうか。

例えばテーブルA、B、Cがあって、いずれも名前、住所というフィールドがあるとしたら
=操作方法=
1.クエリーをデザインビューで新規作成します。
2.テーブルの表示は、なにも選択せず閉じます。
3.画面左上のファイルメニューの下にSQLというボタンが出来ているはずです。
4.クリックするとSQLウインドが表示されます。SELECT;のみが表示されていると思います。
5...続きを読む

Qアクセスのクエリでレコード削除ができません。

アクセス超初心者です。

テーブルを商品コードでくっつけて、クエリのデザインビューで表示しました。

いらないレコードを削除しようとしたところ、できません。

くっつける前の、テーブルではできますが、クエリで実行させ、レコードを削除しようとしたところできません。

どうしたらよいのか教えてください。

あと、もうひとつ、クエリで、出力したいフィールド名をドラッグしたあと、削除したいときには、どうすればよいでしょうか?

表示しないなら、できるのですが・・・。削除がわかりません。

よろしくお願いいたします。

Aベストアンサー

二つのテーブル構造が不明
クエリのSQL文も不明
サンプルデータ

以上三点が分からないと回答のしようもありません。
SQL文はクエリをデザインビューで開いて
その上で右クリックすると現れるコンテキストメニューに
SQLビュー が有りますので切り替えると
SELECT ・・・・ てのが有りますのでコピーして此処に貼り付けできます。

クエリはSQL文を分かりやすいように作られたモノで実体はSQL文です。
掲示板ではこのSQL文でやり取りをします。
さて、なぜ削除できないかというと、そのように作ってしまっているからです。
このリンク先の説明を理解すれば原因が突き止められます。
クエリのデータを編集できない状況
http://office.microsoft.com/ja-jp/access-help/HA010097876.aspx

フィールドの削除は、Access2010の場合なら
リボンの中に「列の削除」が有ります。
または、フィールド名の少し上にマウスカーソルを持って行くと
下向きの太い矢印になるのでクリック、列全体が反転しますので Deleteキーで削除
なお、次回からはAccessのバージョンも明記しましょう。

二つのテーブル構造が不明
クエリのSQL文も不明
サンプルデータ

以上三点が分からないと回答のしようもありません。
SQL文はクエリをデザインビューで開いて
その上で右クリックすると現れるコンテキストメニューに
SQLビュー が有りますので切り替えると
SELECT ・・・・ てのが有りますのでコピーして此処に貼り付けできます。

クエリはSQL文を分かりやすいように作られたモノで実体はSQL文です。
掲示板ではこのSQL文でやり取りをします。
さて、なぜ削除できないかというと、そのように作ってしまっているか...続きを読む

QAccessから主キーの無いOracleテーブルにVBAで主キー設定付のODBC接続するには

Oracle7--------------- Access97
Workgroup Server
Release 7.3.2.2.1

TABLE_A----------------ODBC接続(リンクテーブル)    
項目1
項目2
項目3
項目4

項目1~項目4は
空白レコードがあり
主KEYが張れない

********************************************************************
主キーの作成出来ないオラクルテーブルがあります。

Access97からODBC接続を作成する時は

(1)マニュアルであれば
  対象テーブルに主キーが無ければ
任意の10項目を仮の主キーとして設定出来ますが

(2)VBA(自動?)で リンク張ると

Dim tab01 As TableDef
 Dim db01 As Database
 Dim strTABname As String

strTABname = TABLE名
Set db01 = CurrentDb
Set tab01 = db01.CreateTableDef(UserName & "_" & strTABname, dbAttachSavePWD)
tab01.SourceTableName = UserName & "." & strTABname
tab01.CONNECT = "ODBC;DSN=****;UID=" & UserName & ";PWD=" & Password & ";ConnectString=con;"
db01.TableDefs.Append tab01

主キー設定の無いODBC接続が出来て
  データの更新などが出来なくなります。

VBAでも仮の主キー設定付きのODBC接続は
 出来ないでしょうか?

Oracle7--------------- Access97
Workgroup Server
Release 7.3.2.2.1

TABLE_A----------------ODBC接続(リンクテーブル)    
項目1
項目2
項目3
項目4

項目1~項目4は
空白レコードがあり
主KEYが張れない

********************************************************************
主キーの作成出来ないオラクルテーブルがあります。

Access97からODBC接続を作成する時は

(1)マニュアルであれば
  対象テーブルに主キーが無ければ
任...続きを読む

Aベストアンサー

手元にACC97は無いのですが、擬似インデックスを作成すれば可能だったはず。

作成方法は通常のINDEX作成と変わりはありません。

db01.Execute "CREATE INDEX ・・・・;"


人気Q&Aランキング