• 締切済み

クエリで・・・

Windows2000/Access2000 削除クエリで質問です。 中古車と中古仕入という2つのテーブルがあり、注番でリレーションが設定されてます。 中古車の中古車年・月・日が未入力で、中古仕入の仕入区分のコンボボックスの値が「孫取」以外を抽出削除するクエリを作ったのですが、「指定されたテーブルからは削除出来ませんでした」とメッセージが返ってきました。 以下のように設定してますので、どのように設定したら良いのかアドバイス頂けたらと思います。宜しくお願い致します。 strSQL = DELETE 中古車.*, 中古車.中古車売上年, 中古車.月2, 中古車.日2, 中古仕入.仕入区分 FROM 中古車 INNER JOIN 中古仕入 ON 中古車.中古車注番 = 中古仕入.中古車注番 WHERE (((中古車.中古車売上年) Is Not Null) AND ((中古車.月2) Is Not Null) AND ((中古車.日2) Is Not Null) AND ((中古仕入.仕入区分)<>"孫取")); DoCmd.RunSQL (strSQL)

みんなの回答

  • takekan
  • ベストアンサー率42% (6/14)
回答No.1

DELETE文自体が間違えていませんか? DELETE文を使って削除できるのは、条件に一致するテーブルの行全体です。 簡単な構文を記載しておきますのでご確認ください。 <構文> ・単一テーブルの削除 DELETE FROM 削除するテーブル名 WHERE 削除条件 ・複数テーブルと結合して条件を設定し削除 DELETE 削除するテーブル名 FROM 削除するテーブル名 INNER JOIN 結合するテーブル名 ON 結合条件 ・・・ WHERE 削除条件

renault
質問者

お礼

お返事遅くなってすいませんでした。 無事解決致しました。 アドバイス有難うございました。

関連するQ&A

  • クエリーについて

    仕事でクエリーを使ってデータの検索をする事になりました。 そこでよく出てくる「julianmonth」や「is not null」等どんな意味 なのか良くわかりません。 先月とか今月という検索をする時にjulianmonthを使ったりしているのですが 条件式を自分でつくるにはまだ意味を理解していないのでどなたか こんな私でもわかるようにクエリーの条件式について教えて下さい。 よろしくお願いします。

  • ACCESS まとめて表示するクエリについて

    商品の売上データ・仕入データが個別にあります。 商品には大中小の分類があり、各分類は2ケタのコードです。つまり、 (1) 大分類/中分類/小分類/仕入金額 01/02/05/1,000 という構成のデータと (2) 大分類/中分類/小分類/売上金額 01/02/05/1,250 という構成のデータとがあるわけです。この2つをExcelデータで持ってて、データが大量なのでAccessに取り込み、最終的には 大分類/中分類/小分類/仕入金額/売上金額 01/02/05/1,000/1,250 というように、仕入金額と売上金額を一纏めにして表示したいのです。 ここで、上記(1)を仕入テーブル、(2)を売上テーブルとし、 SELECT 大分類,中分類,小分類,仕入金額,売上金額 FROM 仕入,売上 WHERE 仕入.大分類=売上.大分類 AND 仕入.中分類=売上.中分類 AND 仕入.小分類=売上.小分類 とクエリを作ってみたら、各テーブルのデータが数千件になっただけで、物凄くクエリの動きが遅くなりました。 大中小分類の一致を、WHEREでなくINNER JOINで記述してみても、遅くなります。 最初のテーブル作成からして、間違ってるでしょうか?いい案はないでしょうか?

  • 抽出が出来ないくらい遅いクエリ

    以下のようなクエリーを作成して検索を 行っているのですが、どうしても抽出が出来ないくらい 遅くどの部分で遅くしているのかが分からないため、 どなたか教えてもらえないでしょうか? ※足りない情報があればすみませんが、仰ってください。 なるべくプログラム(PHP等)を使わずクエリのみで 行いたいので、PHP云々の話しは無しでお願い致します。 最初の抽出テーブル(osi)と次の抽出テーブル(osday) をそれぞれ個別で動かすと普通の速度で抽出が旨く行きます が、それらをくっつけた形 select (省略) from osi,osday where osi.id=osday.id; とすると、抽出が行えない又は非常に遅いとなります。 ///////// 実際のクエリー文です ///////// select osday.odid,odctmid,saitemname,startday,endday from ( select odid,saitemname from order1 as o,sale as s where o.odid=s.saorderid and (o.odshipdue >= '2007-12-1 00:00:00' and o.odshipdue <= '2007-12-18 23:59:59') and (o.odcancelflag='0' or o.odcancelflag is null) and o.odclass<'4' and s.saregular='1' and s.saitemcode in (select itcode from item where itcategory='1') and odmakeday is not null ) osi , ( select odid,max(odctmid) as odctmid,to_char(min(o.odshipday), 'YYYY-MM-DD') as startday,to_char(max(o.odshipday), 'YYYY-MM-DD') as endday from order1 as o,sale as s where o.odid=s.saorderid and (o.odshipdue >= '2007-12-1 00:00:00' and o.odshipdue <= '2007-12-18 23:59:59') and (o.odcancelflag='0' or o.odcancelflag is null) and o.odclass<'4' and s.saregular='1' and s.saitemcode in (select itcode from item where itcategory='1') and odmakeday is not null group by o.odid ) osday where osi.odid=osday.odid; ///////////////////////////////////////////

  • Accessのクエリの検索条件にフォームのテキストボックスを指定したんですが…

    WinXPのAccess2002です。 クエリの検索条件には、[]カッコを用いてフォーム上のテキストボックスを指定できますが、 Nullじゃないものを検索しようと、is not nullと 入力して、試験的にクエリを起動させたところ、 「式が複雑なので…」というメッセージが帰ってきました。 ですが、そのテキストボックスに値を直接指定(数字を入力 するフィールドなんですが、039とか555とか)すると、エラーも 起きずにクエリは実行してくれます。 "is not null"などの場合は、特別な指定の仕方があるのでしょうか。 どうぞご教示のほどよろしくお願いします。

  • ACCESS 日付が複数ある場合のクエリについて

    おつかれさまです。 ご指導をお願い致します。 [製品]/[番号]/[日付MAIN]/[日付2]/[日付3] の 5フィールドがあるクエリで、下記のようなものを作り たく投稿させて頂きました。 1、[日付MAIN]に日付が入るとデータを表示させたい 2、[日付2]/[日付3]に日付が入るとそのデータは、表示しない このようなクエリを作りたいのですが、どのように作るかを 教えて下さい。 1番の方は、条件に Is Not Null で実現できるのですが、2番目 をどのようにやるべきか悩んでおります。 宜しくお願い致します。

  • SQL文を教えてください

    1-a,1-b,2-a,2-b,3-a,3-b,4-a,4-b,5-a,5-bというカラムがあるとき。 以下の条件を満たす行を抽出するのに、 検索速度の早いSQLの書き方はありますか? (条件)N-aに値有りのとき、N-bは値有り  ただし、1-aから5-a全て値なしのときは対象外 ※こんな書き方は思いつくのですが、遅そうで・・・ ( (1-a is not null AND 1-b is not null) or (2-a is not null AND 2-b is not null) or (3-a is not null AND 3-b is not null) or (4-a is not null AND 4-b is not null) or (5-a is not null AND 5-b is not null) ) and not(1-a is null AND 2-a is null AND 3-a is null AND 4-a is null AND 5-a is null)

  • クエリの遅さの原因

    下記のクエリーをそれぞれ試してみたところ、圧倒的に下の方が遅くなってしまいました。 $rs = mysql_query("select * from A INNER JOIN B ON B.cat = A.id order by B.id desc LIMIT 1, 10 ;",$con); $rs = mysql_query("select * from A INNER JOIN B ON B.cat = A.id where B.name is not null group by B.area order by B.id desc LIMIT 1, 10 ;",$con); where B.name is not null group by B.area この処理はそれほど負荷が掛かってしまうのでしょうか。 他に良い書き方(方法)がありましたら教えてください。

    • ベストアンサー
    • MySQL
  • ACCESS2003 クエリの抽出条件

    宜しくお願いします。 フィールド A A B B 1 セレナ ステップワゴン ・ ・ とあります。 抽出条件にてIS NOT NULLにすると空白以外表示されます。 セレナ以外の場合、IS NOT "セレナ"にするとセレナ以外になります。 クエリを実行する際、空白以外、セレナ以外、Aのみ、と一度で入力し、表示させたいのですが、どのようにすればよいでしょうか。 抽出条件を[抽出条件を入れてください]とし、 実行ボタンを押し、IS NOT NULLやNOT LIKE "セレナ"といれても何も表示されません。

  • ExcelVBAでACCESSのクエリに接続したい

    Excel、ACCESSの2003を使用しています。 Excelで、指定した期間の情報をmdb上よりExcel側に出力する処理を考えています。 mdbファイルの接続先がテーブルならうまく処理できます。 しかし今回の接続先がクエリの為か、処理を動かしてもエラーは出ないのですが値が無い扱いになっています。 mdbのテーブルにはリンクテーブルで2つのテーブルがあります。 クエリ側で2つのテーブルをリレーションしており、クエリで表示している内容をExcel側に返したいのです。 下記の処理はクエリに接続をしていないのでしょうか? Option Explicit Const cnsADO_CONNECT1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" Dim dbCon As New ADODB.Connection Dim dbRes As New ADODB.Recordset Dim dbCol As ADODB.Field Dim strSQL As String, strStartDate As String, strEndDate As String Dim lngGyo As Long, lngCol As Long Dim strRootPath As String, strFileName As String, strPath As String Dim intField As Integer, i As Integer, j As Integer Public Sub ACCESS接続() strRootPath = "\\11.111.11.1\00_テストフォルダ\"  'IPアドレスとフォルダ選択 strPath = "00_環境設定\01_テスト用\" 'パス先 strFileName "テスト.mdb" 'mdb名 dbCon.Open cnsADO_CONNECT1 & strRootPath & strPath & strFileName  'mdb接続 strStartDate = "#09/01/2014# AND " strEndDate = "#09/23/2014#)" '''''SQLビューの内容をそのまま''''' strSQL = "SELECT テーブルA.年月日, テーブルA.実績No., テーブルB.依頼数, テーブルA.略号, テーブルA.作成No., テーブルA.数値No., テーブルA.名称, テーブルA.CD, テーブルA.長さ, テーブルA.場所, テーブルA.フラグ, " strSQL = strSQL & "Format([年月日],""yyyy/mm/dd"") AS 作成年月日" strSQL = strSQL & vbNewLine & "FROM テーブルB INNER JOIN テーブルA ON テーブルB.依頼No.=テーブルA.実績No." strSQL = strSQL & vbNewLine & "WHERE (((テーブルA.年月日) Between " strSQL = strSQL & strStartDate strSQL = strSQL & strEndDate strSQL = strSQL & " AND ((テーブルA.CD) Not Like ""%KN%"") AND ((テーブルA.場所) Like ""*IO*"") AND ((テーブルA.フラグ) Is Null))" strSQL = strSQL & vbNewLine & "ORDER BY テーブルA.年月日;" '''''SQLビューの内容をそのまま''''' dbRes.Open strZisseki_SQL, dbCon, adOpenKeyset, adLockReadOnly 'レコードセット intField = dbRes.Fields.Count lngGyo = 1 dbRes.MoveFirst Do Until dbRes.EOF lngGyo = lngGyo + 1 lngCol = 0 For Each dbCol In dbRes.Fields lngCol = lngCol + 1 Cells(lngGyo, lngCol) = dbCol.Value Next dbCol dbRes.MoveNext Loop dbRes.Close: Set dbRes = Nothing End Sub

  • ACCESSのクエリの抽出

    ACCESS2003を使っています。フォームのコンボボックスに入っているデータを見てクエリで抽出したいと思っています。 フォームのコンボボックスにデータが入っているときは、そのデータで抽出を行い、nullのときは抽出をやめてすべてのデータを表示させたいです。 抽出項目には、null値はありません。 クエリの抽出欄に下記の式を入れましたがうまくいきません。 IIf(IsNull([Forms]![フォーム名]![コンボボックス名])=true , Is Not Null , [Forms]![フォーム名]![コンボボックス名]) コンボボックスにデータが入っている場合は、抽出はうまくいくのですが、nullのときは、何も表示されません。 どこか式が違っているのでしょうか? よろしくお願いします。