• ベストアンサー

Accessでタイムによるレーンの割り振り方法について

お世話になります。 アクセスの抽出?についての質問です。 水泳競技のレーン割り振りをアクセスにて作成しております。 各種目ごとのエントリータイムの昇順までは表示させることができましたが、 レーンの割り振りをどのように行えばよいか全く見当もつきません。 各種目ごとのタイムから 1位は4レーン 2位は5レーン 3位は3レーン 4位は6レーン 5位は2レーン 6位は7レーン 7位は1レーン と割り振りを行いたい。 しかし、参加者が6の倍数の場合は 1位は4レーン 2位は5レーン 3位は3レーン 4位は6レーン 5位は2レーン 6位は7レーン と割り振りを行います。 ですが、6と7の最小公倍数が42のため、参加者が42を超えた場合には 1位は4レーン 2位は5レーン 3位は3レーン 4位は6レーン 5位は2レーン 6位は7レーン 7位は1レーン と割り振りを行いたます。 単純に抽出を行うためのクエリは以下のようにしました。 SELECT Tエントリーマスター.生徒ID, Tエントリーマスター.生徒名, Tエントリーマスター.フリガナ, T学校マスター.学校名, T種目マスター.種目名 AS 種目名の合計, Tエントリーマスター.タイム FROM T種目マスター INNER JOIN (T学校マスター INNER JOIN Tエントリーマスター ON T学校マスター.学校ID=Tエントリーマスター.学校ID) ON T種目マスター.種目ID=Tエントリーマスター.種目ID GROUP BY Tエントリーマスター.生徒ID, Tエントリーマスター.生徒名, Tエントリーマスター.フリガナ, T学校マスター.学校名, T種目マスター.種目名, Tエントリーマスター.タイム, Tエントリーマスター.学校ID, Tエントリーマスター.種目ID ORDER BY T種目マスター.種目名, Tエントリーマスター.タイム; お忙しいとは思いますがよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.7

それじゃ作成に取りかかりましょうか レコード数はたかがしれているでしょうから 処理速度を気にする必要はないと考えてすべて式でやってしまいましょう まず元のテーブルは下のようなものとします 「記録」(エントリーNO、名前、種目、タイム) もう一つコース分け用のテーブルを作成します 「コース分け」 組内順位 コースNO 1     4 2     5 3     3 4     6 5     2 6     7 7     1 記録テーブルから下のようなクエリを作ります 順位: DCount("*","swim","種目=" & [種目] & " and (タイム< #" & [タイム] & "# or タイム=#" & [タイム] & "# and エントリーNO<" & [エントリーNO] & ")") 組NO: IIf(DCount("*","swim","種目=" & [種目]) Mod 6=0,[順位]\6,[順位]\7))+1 組内順位: IIf(DCount("*","swim","種目=" & [種目]) Mod 6=0,[順位] Mod 6,[順位] Mod 7)+1 このクエリとコース分けテーブルを組内順位で結合するクエリを作ります

kaikankan
質問者

お礼

お忙しい中本当にありがとうございます! クエリのみでもここまでできるのですね!!! もっと、もっと、関数の勉強もしなくては! ですね・・・ orz まだ、まだ、精進ですね! 諮問ばかりではなく、回答者になれるように頑張ります。 いつも、本当にありがとうございます。

その他の回答 (6)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.6

> たとえば、「"レース名"&"エントリーマスター"」などとして > この過去データとして呼び出すクエリ?が必要になってきます・・・ > こちらも、VBAなのでしょうね・・・ フォーム表示で、フォーム1つで対象テーブルを切り替える方法(一例) 基本的なクエリが以下の様だとします。 SELECT Tエントリーマスター.生徒ID, Tエントリーマスター.生徒名, Tエントリーマスター.フリガナ, T学校マスター.学校名, T種目マスター.種目名, Tエントリーマスター.タイム FROM T種目マスター INNER JOIN (T学校マスター INNER JOIN Tエントリーマスター ON T学校マスター.学校ID = Tエントリーマスター.学校ID) ON T種目マスター.種目ID = Tエントリーマスター.種目ID ORDER BY T種目マスター.種目名, Tエントリーマスター.タイム; VBA部分で String 変数に「Tエントリーマスター」部分を「XXXXXX」に変更したものを宣言しておきます。 SELECT XXXXXX.生徒ID, XXXXXX.生徒名, XXXXXX.フリガナ, T学校マスター.学校名, T種目マスター.種目名, XXXXXX.タイム FROM T種目マスター INNER JOIN (T学校マスター INNER JOIN XXXXXX ON T学校マスター.学校ID = XXXXXX.学校ID) ON T種目マスター.種目ID = XXXXXX.種目ID ORDER BY T種目マスター.種目名, XXXXXX.タイム; strSQL = "・・・" この部分に上記を記述 必要に応じて、フォームの RecordSource に XXXXXX を書き換えたものを設定します。 例)「Tエントリーマスター」テーブルを対象とする場合 Const strSQL = "・・・" Private Sub Form_Load()   Me.RecordSource = Replace(srtSQL, "XXXXXX", "Tエントリーマスター")   Me.Requery End Sub どのテーブルを処理対象とするか/させるか どのタイミングで切り替えるか・・・・・・いろいろ考えてみてください。 VBAは結構面白いと思います。

kaikankan
質問者

お礼

お忙しい中ありがとうございます。 これから、VBAを使いこなすべく勉強に励みます! 本当にありがとうございました。

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.5

#4 です 記述が間違ってました 誤)  例)    7人 -> 7    8人 -> 6 + 2    9人 -> 6 + 3  10人 -> 7 + 2   11人 -> 7 + 3  12人 -> 6 + 6   13人 -> 7 + 6  14人 -> 7 + 7   15人 -> 7 + 6 + 2 ・・・ 正)  例)    7人 -> 7    8人 -> 6 + 2    9人 -> 6 + 3  10人 -> 7 + 3   11人 -> 7 + 4  12人 -> 6 + 6   13人 -> 7 + 6  14人 -> 7 + 7   15人 -> 7 + 6 + 2 ・・・

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.4

ちょっと興味があったので、ご迷惑かもしれません。失礼いたします。 ご質問で提示されているクエリは以下のものでも同じでしょうか (グループ化は使っていないのですが:グループ化で何が変わるかわからなかったので) SELECT Tエントリーマスター.生徒ID, Tエントリーマスター.生徒名, Tエントリーマスター.フリガナ, T学校マスター.学校名, T種目マスター.種目名, Tエントリーマスター.タイム FROM T種目マスター INNER JOIN (T学校マスター INNER JOIN Tエントリーマスター ON T学校マスター.学校ID = Tエントリーマスター.学校ID) ON T種目マスター.種目ID = Tエントリーマスター.種目ID ORDER BY T種目マスター.種目名, Tエントリーマスター.タイム; 同じということが前提で、2通りの方法を 方法1)ADOを使用したVBAでの記述(テーブルデータ書換え)  前提条件)Tエントリーマスターに3フィールド追加        順位、組、レーン (それぞれ整数)       (順位、組は、後々ソートに使えるのではないか程度のもの)   7人体制で最終レースが2人以下であれば、前レースを6人とする例   (極端な例として、一人では泳がせない)   (不要であれば Start ~ End 削除してください)  例)    7人 -> 7    8人 -> 6 + 2    9人 -> 6 + 3  10人 -> 7 + 2   11人 -> 7 + 3  12人 -> 6 + 6   13人 -> 7 + 6  14人 -> 7 + 7   15人 -> 7 + 6 + 2 ・・・ Public Sub UpdateMatchRace()   Dim rs As New ADODB.Recordset   Dim rsUp As New ADODB.Recordset   Dim iModVal As Integer   Dim iRecCount As Long   Dim iCount As Long   Dim iRace As Integer   Dim iNum As Integer   Dim iTmp As Integer   rs.Source = "SELECT * FROM T種目マスター ORDER BY 種目名;"   rs.Open , CurrentProject.Connection, adOpenForwardOnly, adLockOptimistic   rsUp.Source = "SELECT * FROM Tエントリーマスター ORDER BY タイム, 生徒ID;"   rsUp.Open , CurrentProject.Connection, adOpenKeyset, adLockOptimistic   While (Not rs.EOF)     rsUp.Filter = "[種目ID]=" & rs("種目ID") '    rsUp.Filter = "[種目ID]='" & rs("種目ID") & "'" '文字なら     If (Not rsUp.EOF) Then       iRecCount = rsUp.RecordCount       If ((iRecCount Mod 6) = 0) Then         If ((iRecCount Mod 7) = 0) Then           iModVal = 7         Else           iModVal = 6         End If       Else         iModVal = 7       End If       iNum = 1       iRace = 0       iCount = iModVal + 1       iRecCount = iRecCount + iModVal       rsUp.MoveFirst       While (Not rsUp.EOF)         If (iCount > iModVal) Then           iRace = iRace + 1           iCount = 1 ' Start 一人では泳がせない           iRecCount = iRecCount - iModVal           iTmp = iRecCount Mod iModVal           If ((iTmp > 0) And (iTmp <= 2) And _             (iRecCount < (iModVal * 2))) Then             iModVal = 6           End If ' End 一人では泳がせない         End If         rsUp("順位") = iNum         rsUp("組") = iRace         rsUp("レーン") = Choose(iCount, 4, 5, 3, 6, 2, 7, 1)         rsUp.Update         iNum = iNum + 1         iCount = iCount + 1         rsUp.MoveNext       Wend     End If     rs.MoveNext   Wend   rs.Close   rsUp.Close End Sub 方法2)同タイムがない&7人体制という前提でのクエリ(雰囲気だけで) レーンを管理するテーブル「Tレーンマスター」を作ります。 フィールドは、RANK、レーンNO の2つ(整数) テーブル内容  RANK レーンNO   1   4   2   5   3   3   4   6   5   2   6   7   7   1 SELECT Tエントリーマスター.生徒ID, Tエントリーマスター.生徒名, Tエントリーマスター.フリガナ, T学校マスター.学校名, T種目マスター.種目名, Tエントリーマスター.タイム, (SELECT COUNT(*)+1 FROM Tエントリーマスター AS T1 WHERE T1.種目ID=Tエントリーマスター.種目ID AND T1.タイム<Tエントリーマスター.タイム) AS 順位, (SELECT CINT((COUNT(*)+4)/7) FROM Tエントリーマスター AS T2 WHERE T2.種目ID=Tエントリーマスター.種目ID AND T2.タイム<Tエントリーマスター.タイム) AS 組, (SELECT レーンNO FROM Tレーンマスター WHERE Tレーンマスター.RANK = (SELECT (COUNT(*) MOD 7)+1 FROM Tエントリーマスター AS T3 WHERE T3.種目ID=Tエントリーマスター.種目ID AND T3.タイム<Tエントリーマスター.タイム) ) AS レーン FROM T種目マスター INNER JOIN (T学校マスター INNER JOIN Tエントリーマスター ON T学校マスター.学校ID=Tエントリーマスター.学校ID) ON T種目マスター.種目ID=Tエントリーマスター.種目ID ORDER BY T種目マスター.種目名, Tエントリーマスター.タイム; クエリで・・・、私には考えられませんでした。すぐVBAに頼っちゃいます

kaikankan
質問者

お礼

ありがとうございます。 VBAで動作確認できました。 あとは、決勝タイムを入力して順位付けです。 と、現状では1回こっきりのものになってしまうので、Tエントリーマスターを過去データとして保存、 たとえば、「"レース名"&"エントリーマスター"」などとして この過去データとして呼び出すクエリ?が必要になってきます・・・ こちらも、VBAなのでしょうね・・・ これから頑張って勉強します!

kaikankan
質問者

補足

お忙しい中ありがとうございます。 今から試してみます!

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>6で割り切れるときの参加人数のときは、6レーンを使用します。 こういう例外があるのならそのときだけ別の処理をするしかないですね この場合も自動化したいとなるとマクロというよりVBAで処理することになりますが どこまでの自動化をお望みなんでしょう 念のために確認したいのですが 19人の時に6人で2レース、7人で1レースではなく 7人で2レース、5人で1レースでいいのですね

kaikankan
質問者

補足

押しそがしい中いつもありがとうございます。 やはりVBAでの処理になりますか・・・ >念のために確認したいのですが >19人の時に6人で2レース、7人で1レースではなく >7人で2レース、5人で1レースでいいのですね はい、7人で2レース、5人で1レースの処理になります。 VBAもやはり勉強しないとですね! いままで、避けていた分野でありますが、がんばります。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

>レース数は最少レース数としたいので、基本的には7人体制でのレースとなります。 最初の質問の6の倍数云々というのは関係ないのですね それなら簡単な計算だけでできますね ただしレースですから同タイムというケースが出てきますよね その場合でも出走順を分ける必要が出てきますが それはどのようにするのでしょうか

kaikankan
質問者

補足

いつもいつも、お世話になります。 前回の時にもお世話になりっぱなしで本当にありがとうございます。 最初の6の倍数というのは、基本7人態勢でレースを組みますが、 6で割り切れるときの参加人数のときは、6レーンを使用します。 6・12・18・24・30・36・42・48・54・60・66・72・78・84・90・96 の場合です。 ただし、1種目の参加人数が42人・84人の場合は7人態勢でレースを組みます。 あぁーー 同タイム・・・ですか・・・ orz 絶対に出てくるケースですよね・・・ 同タイムの場合は、名前IDで判定をしてレーンを割り振る・・・ が妥当なところでしょうか・・・

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

まだ仕様がはっきりしていませんね 45人が参加し、1位から45位まで整列させたとして それをどのようにレーン割り付けすればいいのですか? 10人しか参加していないときにはどう割り振るのですか?

kaikankan
質問者

補足

返信ありがとうございます。 水泳競技の種目は「17種目」あります。 各競技のエントリー人数はその時々で違ってきます。 人数を割り振ったときの余った人数の処理は以下のようになります。 レース数は最少レース数としたいので、基本的には7人体制でのレースとなります。 10人の場合は、7人を1レース目残りの3人は2レース目とします。 45人の場合は、7人ずつをレースに割り振り、残りの3人を最終組とします。 1レース  1位は4レーン  2位は5レーン  3位は3レーン  4位は6レーン  5位は2レーン  6位は7レーン  7位は1レーン 2レース  8位は4レーン  9位は5レーン  10位は3レーン  11位は6レーン  12位は2レーン  13位は7レーン  14位は1レーン 3レース  15位は4レーン  16位は5レーン  17位は3レーン  18位は6レーン  19位は2レーン  20位は7レーン  21位は1レーン 4レース  22位は4レーン  23位は5レーン  24位は3レーン  25位は6レーン  26位は2レーン  27位は7レーン  28位は1レーン といった感じでレース数を組み立てていきます。 最後に新規テーブルに書き出したいと思います。 新規テーブルに書き出したデータに決勝レースタイムを入力し、順位を決めます。 その順位から、レポートを使用して賞状を作成したいと考えております。 お忙しとは思いますがよろしくお願いいたします。 やっぱり、マクロでないとダメでしょうか・・・

関連するQ&A

  • Access2016 マイナス設定出来ません。

    こんにちは 先日、質問して丁寧にお教え頂いたのに どうしても出来ません。先日、教えてくださったお二方様 出来が悪い子で本当にすみません。 SELECT T入出金.番号, T入出金.日付, T入出金.発電所コード, T入出金.発電所名, T発電所マスター.事業形態, T入出金.項目コード, T項目マスター.項目名, T入出金.[金額(税込)] FROM (T入出金 INNER JOIN T項目マスター ON T入出金.項目コード = T項目マスター.項目コード) INNER JOIN T発電所マスター ON T入出金.発電所コード = T発電所マスター.発電所コード, UPDATE T入出金 SET [T入出金].[金額(税込)] = [T入出金]![金額(税込)]*-1 WHERE ((([T項目マスター].項目コード)="K02")); で、実行すると FROM 句の構文エラーです。となります。 詳しい方、よろしくお願いいたします。

  • Accessのクエリについて教えてください。

    クエリで顧客名を入力するとその人のデータが表示されるようにしたいのですが、購入履歴がない人は表示されません。購入履歴のない人も全て表示させる方法を教えていただけますか? ちなみにSQLはこういう感じです。よろしくお願いします。 SELECT 顧客マスター.顧客ID, 顧客マスター.氏名, Sum(販売.販売額) AS 販売合計 FROM 顧客マスター INNER JOIN 販売 ON 顧客マスター.顧客ID = 販売.顧客ID GROUP BY 顧客マスター.顧客ID, 顧客マスター.氏名 HAVING (((顧客マスター.氏名) Like [顧客名字を入力してください] & "*"));

  • Accessの条件つき抽出>テーブル作成。

    「T_マスタ」 ・氏名ID ・氏名 ・会社グループ 「T_サブ」 ・氏名ID ・データ年 というようなテーブルがあり、この2ツから「Q_検索」というクエリを作成しています。 このクエリを元に検索フォームを作成しました。 この検索フォームで「データ年」を選んで「エクスポート」を押すと、 会社グループが「110」のものだけを抽出して「T_Excel_110」という テーブルが作成されるようにしたいのです。 「エクスポート」ボタンのコードは ---------------------------------------- (検索用のコード)省略 DoCmd.RunSQL "SELECT [T_マスタ].[氏名ID], [T_マスタ].[氏名], [T_マスタ].[会社グループ],[T_サブ].[データ年], INTO T_Excel_110" _ & " FROM (T_マスタ INNER JOIN T_サブ ON [T_マスタ].[氏名ID]=[T_サブ].[氏名ID]) " _ & " WHERE ((([T_マスタ].[会社グループID])="110"))" & WhereCond stDocName = "T_Excel_110" DoCmd.OpenTable stDocName, acNormal, acEdit MsgBox "[ファイル]-[エクスポート]でExcelファイルを指定してください。" としたのですが、エラーになってしまいます。 いったいどこを直せばいいのでしょうか?

  • 複数テーブルの結合

    マスターテーブル1つと、子テーブルが複数存在して子テーブルにはマスターテーブルのidを格納するフィールドがあり参照しなくなったときにはそのidを消去するといったデータベースがあったときにマスターIDごとに子テーブルのどれか1つでも参照していればカウントするみたいなSQLをつくりたいんですが select count(m.id) from master m inner join a on m.id = a.m_id inner join b on m.id = b.m_id inner join c on m.id = c.m_id group by m.id みたいなSQLだとAにデータが存在しなければB以降に存在しても期待した結果が出力されません。A、B、Cいずれかのm_idとマスター側のIDが等しければカウントするという出力をするためにはどのように書けばいいんでしょうか。 わかりづらい説明で申し訳ありませんがよろしくお願いします。

    • ベストアンサー
    • MySQL
  • inner joinをすると数がおかしくなります

    SQLのinner joinについてお教え下さい。環境はWin 7 MYQL5です。 t1テーブルのデータ ID,在庫 001,22 t2テーブルのデータ ID,出庫 001,17 001,3 SELECT Sum(t1.stock) AS `在庫` FROM t1 where id = '001' 上記SQLの結果は22と表示されます。 SELECT Sum(t1.stock) AS `在庫` FROM t1 INNER JOIN t2 on t1.id = t2.id where id = '001' とやると、結果が44になってしまいます。 なぜそんな結果になってしまうのでしょうか? 結果はt1.stockは在庫22なので、22と表示するようにしたいです。 よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • Accessで複数テーブルのJoin

    次のようなテーブル(T1~T4)とクエリ(Q1~Q2)があります。 クエリの表で囲っているものはAccessのQBEを表しています。 その下はAccessが自動生成したSQLです。 Accessがある場合はいいのですが、ない場合、いきなりSQLを 書かないといけないわけですが、どのような順番に並べていって いいのか整理がつきません。 4つ以上になるとさっぱりです。 何かヒントをいただけませんでしょうか? T1:売上表[売上No、日付、顧客CD] T2:顧客表[顧客CD、顧客名] T3:売上明細[ID、売上No、連番、商品CD、数量] T4:商品表[商品CD、商品名、単価] Q1: ┌────────────────┐ │日付 │ 商品名│単価 │数量 │ ├────────────────│ │売上表│商品表│商品表│売上明細│ └────────────────┘ SELECT 売上表.日付, 商品表.商品名, 商品表.単価, 売上明細.数量 FROM 商品表 INNER JOIN (売上表 INNER JOIN 売上明細 ON 売上表.売上No = 売上明細.売上No) ON 商品表.商品CD = 売上明細.商品CD; Q2: ┌────────────────────┐ │日付 │ 顧客名│商品名│単価 │数量 │ ├────────────────────│ │売上表│顧客表│商品表│商品表│売上明細│ └────────────────────┘ SELECT 売上表.日付, 顧客表.顧客名, 商品表.商品名, 商品表.単価, 売上明細.数量 FROM (商品表 INNER JOIN (売上表 INNER JOIN 売上明細 ON 売上表.売上No = 売上明細.売上No) ON 商品表.商品CD = 売上明細.商品CD) INNER JOIN 顧客表 ON 売上表.顧客CD = 顧客表.顧客CD;

  • 条件によるコストの違いは?

    [社員マスタ]及び[個人マスタ]共に[社員ID][個人]が主キーです。 その二つのテーブルをJOINし 1つ目のSELECT文は[社員マスタ]の[社員ID]が1の物を 2つ目のSELECT文は[社員マスタ]及び[個人マスタ]の[社員ID]が1の物を 取得するSQLです、このSQLが返す答えは一緒なのは当然ですが 実行プランのコストまで同じなのは何故でしょうか? 2つ目のWHEREは2つのテーブルから条件をみてるので その分遅くなると思うのですが、詳細がわからない状態です。 何かアドバイス等あれば些細な事でも情報くださいませ。 SELECT * FROM 社員マスタ INNER JOIN 個人マスタ ON 社員マスタ.社員ID = 個人マスタ.社員ID AND 社員マスタ.個人ID = 個人マスタ.個人ID WHERE 社員マスタ.社員ID = 1 SELECT * FROM 社員マスタ INNER JOIN 個人マスタ ON 社員マスタ.社員ID = 個人マスタ.社員ID AND 社員マスタ.個人ID = 個人マスタ.個人ID WHERE 社員マスタ.社員ID = 1 AND 個人マスタ.社員ID = 1

  • Accessで3つのテーブルの結合とフィールドについて教えてください。

    Access2003を使用しています。 「取引先マスタ」テーブルに契約の情報ものせることにしました。 契約は今のところ2種類ありますが、3種類になる可能性もありそうなので、応用が利くようにサブフォームにしました。http://questionbox.msn.co.jp/qa3473958.html 契約内容では弊社の誰が担当したのかわかるようにしたいです。 けれど担当者は新たにフィールドを設けずに、担当者マスタのテーブルから引っ張ってきたほうが良いのかなと思いました。 とすると、契約のテーブルには担当者IDだけでも加えないと結合できないなと思いました。 質問1.この考え方であっているでしょうか? 各テーブルは下記のようになっています。 質問2.T取引先マスタとT担当者マスタに「担当者」という同名のフィールドがありますが、意味合いは違います。これは「取引先担当者」と「弊社担当者」と名前を分けたほうがよいのでしょうか? 一緒でもなんとかいけるものでしょうか? テーブルの正規化いうものがしっかりと理解できていないので正しいのかどうがわかりかねています。 この3つのテーブルを結合させて、フォームとレポートを作りたいのです。 そして、契約締結済みと未締結との取引先に抽出わけをしたいのです・・・が、ここでつまずいてしまって困っております。 お手数をおかけして申し訳ないのですが、どなたかご教示ください。 よろしくお願いいたします。 T取引先マスタ  ID  取引先ID  取引先名  フリガナ   部署名   担当者名・・・・・・取引先の担当者名  郵便番号  都道府県  住所1  住所2  電話番号  FAX番号  URL  電子メール  備考   T取引先_契約内容  ID  取引先ID  契約種別・・・・・・基本と業務委託がある  契約締結日  契約終了日  契約者役職  取引先契約者名  担当者ID・・・・・・弊社の担当者を判別するもの。T担当者ますたと結合する。 T担当者  担当者ID  並べ替え  担当者名  フリガナ  備考  

  • Accessで質問です

    現在Accessでデータベースを練習で作っているのですが、フォームでIDを入れるとテストの名前が出るようにしています。(例:ID:0001を入れると自動的にテスト名:テスト1)が入力される。 これを逆にテスト1を入れるとID0001が入力できるようにできますか? テーブルとクエリは以下のようになってます。 Tテスト ・テストID(主キー) ・テスト名 T生徒 ・生徒NO(主キー) ・生徒名 ・テストID(TテストのテストIDとリレーション) Q各受験テスト ・生徒NO ・生徒名 ・テストID ・テスト名 フォームは「Q各受験テスト」を元に作っています。(すべての項目を使っています) リレーションの関係で当然「テストID」を入れると「テスト名」は自動的に入るのですが、逆のことをしたいのです。「テスト名」を入れると「テストID」が自動的に入るようにしたいのです。 よろしくお願いいたします。

  • SQLについて

    以下のSQLを実行すると。 SQL実行中に以下のエラーが発生しました。 エラーコード:907 [Oracle][ODBC][Ora]ORA-00907: 右カッコがありません。 というエラーが表示されます。 どこがおかしいでしょうか? SELECT Q1.Pコード, Q1.Qコード, T1.E名称 A名称, T2.E名称 B名称, T3.E名称 C名称, T4.E名称 D名称, FROM ( ( ( ( SELECT Pコード, Qコード, Aコード, Bコード, Cコード, Dコード, FROM 報告書 WHERE Pコード = '0001' AND Qコード = '0001' AND ) Q1 INNER JOIN Eマスタ T1 ON Q1.Aコード = T1.Eコード ) INNER JOIN Eマスタ T2 ON Q1.Bコード = T2.Eコード ) INNER JOIN Eマスタ T3 ON Q1.Cコード = T3.Eコード ) INNER JOIN Eマスタ T4 ON Q1.Dコード = T4.Eコード ORDER BY Pコード, Qコード;

専門家に質問してみよう