• 締切済み

2つのテーブルで使っているフィールドの編集

電話番号や会社名などの個人情報が入っているテーブル1と 書き込んだ日付や出荷した荷物などの詳細が書かれているテーブル2があります。 (テーブル2には同じ会社に対して何種類か書いているので"登録番号"フィールドには同じ"登録番号"が存在する場合がある) この2つのテーブルを現在"登録番号"で繋いでいる状態なのですが、 この"登録番号"は穴空き連番になっている状態です。 この穴空き連番を綺麗な連番に変えたいと思っています。 なので穴空き連番と別フィールドに仮に振った綺麗な連番に書き換えたいと思っています。 作業順としては (1)"登録番号"と"連番"を最小値から比較していき、"登録番号"の空きを探す (2)"登録番号"の空きが見つかったらコレを一時保存、連番も一時保存 (3)次に登録されている"登録番号"を探す。 (4)"登録番号"発見したら、一時保存していた"登録番号"に一時保存していた"連番"を入れる *テーブル2には"登録番号"が複数ある場合があるため複数あるものはすべてコピー といった作業を繰り返したいのですが、 伝わりますでしょうか・・・ 分かりにくい場所は多いと思いますが何かいい案はありますでしょうか 他にこうした方が簡単というものがあれば教えてください。 ヒントでもいただければと思い質問しました。

noname#135452
noname#135452

みんなの回答

  • Gletscher
  • ベストアンサー率23% (1525/6504)
回答No.1

一時保存とか、難しいことを考えずに、単に連番じゃダメなんでしょうか? 顧客コード番号のようなものですよね? たとえば、地区などでコード割付されていて、■■○○○ みたいな番号とします。 ■■が地区コードで、○○○が連番です。 そうしたら、1件目が3行目に書かれているとして、そのコード番号を1番とすれば、 =CONCATENATE("AA",RIGHT(CONCATENATE("000",ROW()-2),3)) で良いですね? それを下にコピーすれば良いと思います。

noname#135452
質問者

お礼

お礼に書き込み失礼します。 やり方が大きく変わったので新たに質問させていただきました http://okwave.jp/qa4860036.html 回答ありがとうございました。

noname#135452
質問者

補足

ご回答ありがとうございます。 変更したいフィールドが主キーになっていまして、片方のテーブルだけ変更するってことができないようなのです。 回答していただいた内容でWhile not rs.EOF で繰り返しすることはできますか? 書き方がわからないのですが、申し訳ありません。

関連するQ&A

  • ピボットテーブル内のフィールド値を求める計算式

    セル位置(行や列)を引数に、別の表にあるセルの値をINDIRECT関数で 参照するような感じと同様に、ピボットテーブル中のフィールド値の種別 を参照する計算式の書き方が分かれば教えてください。 図のように、ピボットテーブル内のフィールド値の中に、 複数の重複した要素がある場合に、 ピボットテーブルの行番号を指定して、その行にある値は INDIRECTで求められますが、フィルターの見出しにあたる (この図の例では「型式」のフィールド区分)を求める 計算式(あるいは計算式の組み合わせ)が分かりませんでした。 ピボットテーブルが固定されていれば、行列番号が変わらない 前提で方法はありそうですが、 ピボットテーブルのフィールドの順番を入れ替えても (この図の例では区分と型式を入れ替えても) 大丈夫なように、汎用的な式が書ければと思っています。 よろしくお願いします。 (1)重複した要素のある元データ表 (2)行フィルターに複数のテーブル条件を指定 (3)できがったピボットテーブル (4)行番後を指定して、INDIRECTで値を求めるのと同様、行フィルターの元のフィールドを計算式で求められるか。

  • access2007 テーブルデータのフィールドの並び替えをしたい

    テーブルを作成し、フィールドを複数作りました。 それを見やすいように任意に並び替えをし、保存してから再度開くと並び替えをする以前の状態に戻っています。 開くたびにフィ-ルドを並び替えをしている状態です。 一度作成した順番は任意に変更して保存できないのでしょうか?

  • 別テーブルのフィールド名は同じでよいのですか

    Accessで顧客(会社)、倉庫、担当者などのテーブルの、それぞれに住所や電話番号などのフィールドがあります。 将来的にはVBAなども勉強して使いたいのですが、テーブルが違えば、フィールド名は同じにしておいてもかまわないものなのでしょうか。 ご教示よろしくお願い申し上げます。

  • 一つのフィールドに複数の情報を持たせたいです。

    データベースに詳しい方!一つのフィールドに複数の情報を持たせたいです。 例えば複数のユーザを管理するテーブルにあるID(フィールド)を 複数個をデータベースに保存する場合どうすればいいのでしょうか? 言語はJavaで、データベースはMySQLを使っています。 ↓↓各フィールド(例) -------------------------- || userName || userID || ○○ID || -------------------------- 上記の 「○○ID」というフィールド に複数の値を持たせたいのです。 String型の配列、もしくはXMLをMySQLの一つのフィールドに保存する 事はできるのでしょうか? (もし出来るのならこちらを採用したいです) それとも○○IDに関連するテーブルを作成する(?) それか最悪の場合、ユーザが増えるたびにテーブルを一つ作成 して管理するか・・・・(避けたいです) 宜しくお願いします。

    • ベストアンサー
    • MySQL
  • データベースのフィールドそのものを自由に定義できるテーブル設計とは

    はじめまして。 この度、ユーザからの入力をデータベースに保存する複数アンケートフォームを作成しようとしています。 その際、各アンケートフォームごとに入力項目名、入力タイプ好きな数だけ管理側から設定できる仕様です。 このような通常フィールド(列)となる部分の名称やデータタイプを自由に設定できるデータベース設計がうまくいきません。現場ではどのようにしてやられてるのでしょうか? 私が思いつく限りでは ---------------------- アンケートフォームテーブル ・アンケートフォーム番号(PK) ・アンケート名称 ---------------------- 項目雛型テーブル ・項目番号(PK) ・データタイプ ---------------------- 項目実体 ・アンケートフォーム番号(PK) ・項目番号(PK) ・項目名称 ・表示状態 ---------------------- 上記のような構造にした場合、ユーザ毎のアンケートデータを保存するテーブル構造が思いつきません。 作成できる項目数の限度を30に決めて、予め30フィールド、テキスト型のようなものを用意しておくのも狭い利用範囲になる気がしますが・・・ アドバイスをお願いします。

  • Excel2010 ピボットテーブルの連番について

    Excel2010を使っています。 ピボットテーブルに表示されたデータに番号を付けて 表示したいです。 元のデータにNo.というフィールドはありますが、 ピボットテーブルの抽出にあわせて連番をふることが できないでしょうか。 お教えください。。

  • エクセルピボットテーブルのフィールドアイテムについて

    はじめまして。質問させていただきます。 売上報告表を集計するためにピボットテーブルを使っています。(エクセル2003) 必要項目はフィールドのプルダウンにチェックを入れることで選択していますが、元データ側に今まで集計したことのない項目が増えるたびにピボットテーブル側でも表示されてしまいます。(取引先フィールドに新規取引会社が増えていく) 表示する項目は固定ですので、現在は増えてしまった項目のチェックを手作業ではずして対応していますが、この作業を行うピボットテーブルが20個近くあるので正直煩雑でたまりません。 (ピボットテーブルは全て一つのブック内にあります。シートは2枚です。参照データ範囲は同一です。) この状態でも選択した項目のみ固定で表示できる設定、もしくはマクロ等ありましたら教えて下さい。 よろしくお願いします。

  • 登録番号を詰めたい2

    重要な部分が欠けていたので質問させていただきます。またご教授おねがいします。 以前このような質問をしたものですが、 http://okwave.jp/qa4859369.html 連番がずれてしまっていたので、以前説明できてなかった部分を説明したいと思います。 電話番号や会社名などの個人情報が入っている個人情報テーブル(以下個人T)と 値段や出荷した荷物などの詳細が書かれている注文テーブル(以下注文T)があるとします。 2つのテーブルは"登録番号"とフィールドで関連付けをしてあります。 その登録番号を虫食い無しの綺麗な連番にしたいと思います 以下の様な状態です。 "連番"というのは後の作業で"登録番号"と入れ替えをするために作成されたものです。 注文T    注文T  |  個人T     個人T 登録番号   連番   | 登録番号     連番 ZZZZ0001   null   | ZZZZ0001    ZZZZ0001 ZZZZ0002   null   | ZZZZ0002    ZZZZ0002 ZZZZ0002   null   | ZZZZ0003    ZZZZ0003 ZZZZ0004   null   | ZZZZ0004    ZZZZ0004 ZZZZ0006   null   | ZZZZ0006    ZZZZ0005 (テーブル2には同じ会社から何度も注文がある場合"登録番号"フィールドには同じ"登録番号"が存在する場合がある) ところが、個人Tには個人情報があるにもかかわらず注文Tには注文された内容が無い場合があります。 以前質問した時に教えていただいたものですと Private Sub Sample4()   Dim rs As New ADODB.Recordset   Dim i As Integer   Const フィールド名 As String = "☆連番☆"    ' ☆1   Const テーブル名 As String = "☆元テーブル☆"  ' ☆1   Const 抽出 As String = "☆登録番号☆"      ' ☆1   Const 並び替え As String = "☆登録番号☆"    ' ☆1   Dim sTmp As String   i = 0   sTmp = ""   rs.Source = "SELECT * FROM " & テーブル名 & _         " WHERE " & 抽出 & " LIKE 'ZZZZ%' ORDER BY " & 並び替え & ";"   rs.Open , CurrentProject.Connection, adOpenForwardOnly, adLockOptimistic   While (Not rs.EOF)     If (rs(並び替え) <> sTmp) Then       i = i + 1       sTmp = rs(並び替え)     End If     rs(フィールド名) = "ZZZZ" & Format(i, "0000")     rs.Update     rs.MoveNext   Wend   rs.Close End Sub になりますが、反映させた結果は、 注文T    注文T    | 個人T     個人T 登録番号   連番     | 登録番号    連番 ZZZZ0001   ZZZZ0001   | ZZZZ0001    ZZZZ0001 ZZZZ0002   ZZZZ0002   | ZZZZ0002    ZZZZ0002 ZZZZ0002   ZZZZ0002   | ZZZZ0003☆   ZZZZ0003 ZZZZ0004   ZZZZ0003☆  | ZZZZ0004    ZZZZ0004 ZZZZ0006   ZZZZ0004   | ZZZZ0006    ZZZZ0005 と、いうものになります。 本来個人情報だけがある登録番号(ZZZZ0003)に、登録番号(ZZZZ0004)の情報が加わってしまうのです。 したがってまったく関連がない会社同士の情報が混ざってしまうのです (個人情報しかない"登録番号"でずれてしまう) 教えていただいたものは完璧だったのですが、私が情報の足りない質問をしてしまったのが失敗でした・・・申し訳ありません。 注文T    注文T    | 個人T     個人T 登録番号   連番     | 登録番号    連番 ZZZZ0001   ZZZZ0001   | ZZZZ0001    ZZZZ0001 ZZZZ0002   ZZZZ0002   | ZZZZ0002    ZZZZ0002 ZZZZ0002   ZZZZ0002   | ZZZZ0003    ZZZZ0003 ZZZZ0004   ZZZZ0004   | ZZZZ0004    ZZZZ0004 ZZZZ0006   ZZZZ0005   | ZZZZ0006    ZZZZ0005 注文Tがこのような形になるのが理想なのですが、どのように連番を振る途中で飛ばすのか分かりません。 だいぶVBAが変わってしまいそうな気もしますが、どうかよろしくお願い致します。

  • ACCESSテーブルの「フィールド」作成方法について

    Microsoft Accessのテーブル「フィールド」に関する質問です。 作業のイメージをはじめに設定します。ある件で市場調査を行いましたが、設問が下記のとおり、一部に複数選択可能な回答欄があります。 設問1:あなたのすきな色を次の中から「ひとつだけ」選択してください。 (1)赤 (2)青 (3)黄 設問2:あなたの好きな物を次の中から「いくつでも」選択してください。 (1)りんご (2)みかん (3)ばなな (4)すいか (5)かき 以上のようにした場合に、テーブルの「フィールド」をどのように作成したらよろしいのでしょうか、ご教示ください。

  • 同一テーブル内で違うフィールドにデータをコピー

    ryomaniaと申します。 MySQL3.23.58を使用しています。 質問の内容なのですが、NO、CNO、NAMEというフィールドを持つテーブル顧客があります。 NOにはauto_incrementで連番の数字が自動で入ります。CNOにはNOと同じ数字を入れたいと思っています。但し最初は数字の0が入っています。NAMEには名前が入っています。 例: NO | CNO | NAME 1 | 0 | test1 2 | 0 | test2 3 | 0 | test3      ・      ・      ・ といった感じです。この状態からupdate構文などを使用して、もしCNOが0であればNOのデータをCNOにコピーするということは可能でしょうか?出来れば複数の行を一度に行いたいと思っています(1000~3000行くらい)。 googleなどで調べては見ましたが答えというかいいヒントが見つかりませんでした。 変な言い回しになっているかもしれませんがよろしくお願いします。

    • ベストアンサー
    • MySQL

専門家に質問してみよう