人に聞けない痔の悩み、これでスッキリ >>

選択結果に1~順に番号をつけたいのですが、過去ログを見ると 番号: DCount("*","データ","[NO]<=" & [NO])とすればいいと書かれてありました。これはNOが昇順になっている場合にしか1~順になりません。
NOはユニークですが、他のフィールドで昇順にしたい場合はどうすればいいのですか?
例)
NO フリガナ
312 タナカ
322 イトウ
333 マツダ
・・・・
番号 フリガナ(昇順)
2 イトウ
1 タナカ
3 マツダ
となってしまうのです。
ACCESS2002

どうぞよろしくお願いします。

A 回答 (4件)

 ん~多分、



番号: DCount("*","テーブル名","[フリガナ]&[NO]<='" & [フリガナ] & [NO] & "'")

でいけると思いますが、だめだったら、

番号: DCount("*","テーブル名","[フリガナ]<'" & [フリガナ] & "' OR ([フリガナ]='" & [フリガナ] & "' AND [NO] <= " & [NO] & ")")

かな?
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます。出来ました~~~とても感動しました。また、どうか教えてください。まだ、未解決の質問もありますので、よかったら・・・見てみてください。

お礼日時:2006/02/10 16:45

 No.2の補足です。


 ソートキーとして、フリガナ(昇順)に、NO(昇順)を加えています。
    • good
    • 1

クエリーによる順位付け


http://www.ruriplus.com/msaccess/tch/tch_002.html
を応用してみてください。

参考URL:http://www.ruriplus.com/msaccess/tch/tch_002.html
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。ちょっと難しそうですね。じっくり検討します。

お礼日時:2006/02/10 16:57

クエリでは難しいと思います。


レポートではテキストボックスを作成して、コントロールに「=1」を入力し、テキストボックスのプロパティ「集計実行」を「全体」にすれば、自動的に連番を振ってくれます。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。今回はデータアクセスページで使いたいのでレポートは使えなかったのです。でも、無事に解決しました。

お礼日時:2006/02/10 16:54

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

QAccessのフォーム上にレコード数とレコード番号の表示

Accessでクエリを元に表示するフォーム上で、テキストボックス等に関数を使って、レコード数とレコード番号を表示する方法がありましたら教えてください。

フォームの書式設定で「移動ボタン」の表示をすれば目的の事は出来るのですが、表示の大きさが調整できない為、とても見難いのです。

以上よろしくお願いします。

Aベストアンサー

レコード番号のコントロールソースを
=[CurrentRecord]
レコード数のコントロールソースを
=Count("*")-[NewRecord]
としてみてください。

QAccess DCountでの連番について

DCountで連番を追加したいのですが演算対象条件の記述方法が良く分かりません。
調査用品別販売データクエリの商品コードフィールドに対して連番を振りたいです。
商品コード、連番
00110 1
00110 2
00120 1
00120 2
上記のようにしたいのですが
式1: DCount("商品コード","調査用品別販売データ","商品コード=" & [調査用品別販売データ]![商品コード])
これではエラーが出てしまいます。

Aベストアンサー

商品コードと同じようにしてやればいいのです

連番:式1: DCount("*","調査用品別販売データ","商品コード='" & [商品コード] & "' and ID <='" & ID & "'")

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

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

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

Qaccessテーブル作成クエリを実行したときにオートNo(のような)振る方法

お知恵をかしてください。
access2000でテーブル作成クエリを実行した時、作成したテーブルのデーターにIDを1番から振りたいのですが(オートNoのような感じで)、方法がわかりません。

計算式・SQLステートメントでの記述でも、どちらでも良いので、お分かりになる方教えてください★

Aベストアンサー

[TEST1]
ID Field_1
1  110
2  110
3  120

[TEST1]を基に[TEST2]を生成し、更に、オートナンバー型の列を生成するコードです。

? CNNExecte("SELECT * INTO TEST2 FROM TEST")
True
? CNNExecute("ALTER TABLE TEST2 ADD COLUMN AUTO_ID autoincrement")
True

[TEST2]に列[AUTO_ID]が追加されます。
列[AUTO_ID]の型は、オートナンバーです。
番号は自動的に発生します。

[TEST2]
ID Field_1 AUTO_ID
1  110    1
2  110    2
3  120    3

QAccess サブフォームでの選択行の取得

こんにちは。

Access初心者です。

サブフォームでテーブルの項目を表示させていますが、
選択された行を取得する方法はありますか?
サボフォームの下の方に現在選択されているレコード数が表示されてますが、その値でかまいません。

調べているのですが、なかなか検討がつきません。
宜しくお願い致します。

Aベストアンサー

フォーム名がフォーム1、サブフォームコントロールの名前がサブフォーム1だとすると、

Forms!フォーム1!サブフォーム1.Form.CurrentRecord

で取得できます。
(「Forms」と「Form」がありますのでご注意下さい)


また、フォーム1にコードを記述する場合であれば

Me!サブフォーム1.Form.CurrentRecord

サブフォーム1へのコード記述であれば

Me.CurrentRecord

という構文によっても、それぞれ取得が可能です。

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

QACCESSでの行番号の自動採番

いつもお世話になっています。
MSACCESSで、以下のようなしくみを作ろうとしています。

(例)
親テーブル 伝票番号(オートナンバー) 担当番号、販売先番号・・・・
子テーブル 伝票番号(オートナンバー) 行番号、商品番号・・・・

(やりたい事)
項目"伝票番号"はリンクさせて同じ値とする。
項目"行番号"は親レコードの値が増えるたびに1から増加させていくようにしたい。
伝票番号 1 行番号 1
伝票番号 2 行番号 1
伝票番号 2 行番号 2
伝票番号 2 行番号 3
伝票番号 3 行番号 1
のように。

なにぶん初心者なものでマニュアル等調べて見ましたがうまくいきません。よろしくお願いします。

Aベストアンサー

>項目"伝票番号"はリンクさせて同じ値とする。
こうするためには子テーブルのほうにはオートナンバーは使えません
自動的に同じにしたければ、入力インタフェースにメイン・サブのフォームを使います

>項目"行番号"は親レコードの値が増えるたびに1から増加させていくようにしたい。
こうしたければ行番号にもオートナンバーは使えません
サブフォームの伝票番号、行番号以外の必須入力フィールド(たとえば商品番号)の
更新後イベントに番号を算出して代入するようなコードを書いてやることになります

Private Sub 商品番号_AfterUpdate()
If Me.NewRecord Then
Me.行番号 = Nz(DMax("行番号", "子テーブル", "伝票番号=" & 伝票番号), 0) + 1
End If
End Sub

QAccess2000で抽出したデータに連番をふるには

下表のようにIDが1から10まであるテーブルからID3、6を抽出しました。これにID3には連番1、ID6には2と抽出したデータに連番をふりたいです。どうしたら良いですか。教えてください。

ID 会社名 連番
3 A社
6 B社

 

Aベストアンサー

すみません。中間の説明が、かなり手抜いてますので、申し訳ありませんでした。

> マクロを組むということでしょうか。

えっと、違います。
下記の文章のことを言っているものだと思いますが・・・。

> SELECT
> クエリ.ID,
> クエリ.会社名,
> DCount("ID","クエリ","ID <=" & [クエリ]![ID]) AS 連番
> FROM クエリ;

これは、SQL文と言って「Select ~ From ~ Where ~ ;」で構成されるクエリーの文章です。
クエリーをデザインビューで開き、表示-SQLビューにすると、これに似た文章が出てきます。

最初の抽出したクエリー
> ID 会社名
> 3 A社
> 6 B社
の名前を「クエリ」で保管してみて、その後、新規にクエリを作成し、SQLビューにて「Select ~ ;」の部分をコピー&ペーストで貼り付けて、デザインビューに直すと、記述している意味が見慣れたデザインビューで確認できます。
(ユニオンクエリーの場合、デザインビューに変更して確認は出来ませんけどね。これは、ユニオンクエリーではありませんので・・・。)

GUI(グラフィカルユーザーインターフェース)の部分を文章で説明していくのは難しいので、手抜きでSQL文(クエリー文)だけUpしてました。

他にも、手はあるのですが・・・更新可能なクエリーを生成する場合は、思いつく手は、このくらいかなと^^;

すみません。中間の説明が、かなり手抜いてますので、申し訳ありませんでした。

> マクロを組むということでしょうか。

えっと、違います。
下記の文章のことを言っているものだと思いますが・・・。

> SELECT
> クエリ.ID,
> クエリ.会社名,
> DCount("ID","クエリ","ID <=" & [クエリ]![ID]) AS 連番
> FROM クエリ;

これは、SQL文と言って「Select ~ From ~ Where ~ ;」で構成されるクエリーの文章です。
クエリーをデザインビューで開き、表示-SQLビューにすると、これに...続きを読む

QACCESSでの関数について

EXCELではROW()関数で行数を付けることが出来ますが、ACCESSで同様の方法はあるのでしょうか。クエリでROW関数を入れると未定義と出ますし、テーブルにオートナンバーの行を付けて、データを一度クエリで削除した後追加クエリを実行しても1からの連番にならないので困っています。
クエリでROW()関数と同じ方法、またはテーブルでオートナンバーを1からふり直す方法があれば教えてください。

Aベストアンサー

>DCount("*","[テーブル名]") AS 順番
ではcriteriaがありませんのでテーブルのレコード件数が返ってしまいますのでレコード件数しか取得できません。
criteriaは省略可能ですが演算対象となるデータの範囲を指定する文字列式です
criteriaの部分でユニークなフィールドをつかって自分より同じか小さいレコード件数を求めさせます。
例えばユニークなキーがIDであり場合は "ID<=" & [ID] のように指定しレコード件数を出します。
順番 ID 構成比  累計
1  A1 3.9  3.9
2  A2 3.0  6.9
3  B1 2.5  9.4
であればDCount(*,テーブル名,"ID<=" & [ID]) AS 順番
とするとID:A1は自分より同じか小さいキーがA1しかないため1レコードとなり順番は1になりID:A2は同様にA2と自分より小さいA1があるため順番は2となります。ID:B1も同様で3になるという事です。
質問の中にオートナンバー型のフィールドとあるのでユニークなフィールドはオートナンバーのフィールドでもかまいません。主キーのように他と重複しないフィールドを指定してください。

>DCount("*","[テーブル名]") AS 順番
ではcriteriaがありませんのでテーブルのレコード件数が返ってしまいますのでレコード件数しか取得できません。
criteriaは省略可能ですが演算対象となるデータの範囲を指定する文字列式です
criteriaの部分でユニークなフィールドをつかって自分より同じか小さいレコード件数を求めさせます。
例えばユニークなキーがIDであり場合は "ID<=" & [ID] のように指定しレコード件数を出します。
順番 ID 構成比  累計
1  A1 3.9  3.9
2  A2 3....続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング