Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


915 / 2272 ツリー ←次へ | 前へ→

【9535】フォームに自動的に採番をしたいのですが 大河原 07/6/8(金) 19:31 質問[未読]
【9540】Re:フォームに自動的に採番をしたいのですが kohji 07/6/9(土) 16:56 回答[未読]
【9541】Re:フォームに自動的に採番をしたいのですが 大河原 07/6/9(土) 20:33 質問[未読]
【9544】Re:フォームに自動的に採番をしたいのですが kohji 07/6/10(日) 5:18 回答[未読]
【9548】Re:フォームに自動的に採番をしたいのですが hatena 07/6/10(日) 11:24 回答[未読]
【9549】Re:フォームに自動的に採番をしたいのですが 大河原 07/6/10(日) 11:43 発言[未読]
【9550】Re:フォームに自動的に採番をしたいのですが hatena 07/6/10(日) 11:55 回答[未読]
【9552】Re:フォームに自動的に採番をしたいのですが 大河原 07/6/10(日) 14:08 質問[未読]
【9555】Re:フォームに自動的に採番をしたいのですが hatena 07/6/10(日) 17:15 回答[未読]
【9557】Re:フォームに自動的に採番をしたいのですが 大河原 07/6/10(日) 20:45 お礼[未読]
【9558】Re:フォームに自動的に採番をしたいのですが 大河原 07/6/10(日) 20:48 お礼[未読]

【9535】フォームに自動的に採番をしたいのですが
質問  大河原  - 07/6/8(金) 19:31 -

引用なし
パスワード
   お世話になります。
初めて投稿しますが、よろしくお願いします。
Xp,Access2003を使用しております。

クエリからフォームにデータを渡して表示する
処理なんですが、
フォーム上の連番という領域に1〜から連番を
割り付けたいのですが、SQL文が分かりません。
過去ログを参照しましたが、私には該当するもの
がないように思われました。

下記のクエリに連番(seqno)をセットしたいのですが。

SELECT *
FROM tacifimport
ORDER BY tacifimport.kaisyameikana;

初歩的で申し訳ありませんがよろしくお願いします。

【9540】Re:フォームに自動的に採番をしたいのです...
回答  kohji  - 07/6/9(土) 16:56 -

引用なし
パスワード
   大河原 さん こんにちは

>SELECT *
>FROM tacifimport
>ORDER BY tacifimport.kaisyameikana;

SELECT
A,
B,
(SELECT COUNT(*) + 1 FROM tacifimport WHERE tacifimport.A < T1.A ) AS 連番

FROM
tacifimport AS T1;

上記のような形で連番が振られると思います
Aのフィールドは主キーです

以上 お試しくださいませ〜

【9541】Re:フォームに自動的に採番をしたいのです...
質問  大河原  - 07/6/9(土) 20:33 -

引用なし
パスワード
   kohji さん ありがとうございます。

>>SELECT *
>>FROM tacifimport
>>ORDER BY tacifimport.kaisyameikana;
>
>SELECT
>A,
>B,
>(SELECT COUNT(*) + 1 FROM tacifimport WHERE tacifimport.A < T1.A )
>AS 連番
>
>FROM
>tacifimport AS T1;
>
>上記のような形で連番が振られると思います
>Aのフィールドは主キーです

※私には、SELECT文 B, の意味を理解できていません。

質問の内容を変えました。
Access2003です。

表形式のフォームに連番を0001〜nnnnまで自動採番をして
表示したいのですが。

「Aテーブル」から、会社名順に抽出する
「Aクエリ」を作り、抽出した結果を表示する
「Aフォーム」を作りました。
この「Aフォーム」(表形式です)の行の一番左には、"連番"という領域が
あります。
この"連番"に1〜自動採番をしたいのですが手法が分かりません。

「Aテーブル」のデザインは、氏名,会社名,住所・・ となっています。

前画面の条件入力画面で「会社名順表示」ボタンクリックした時のイベントは
Private Sub 会社名順表示_Click()
    DoCmd.OpenForm "Aクエリ"
End Sub です。

「Aクエリ」の内容は
SELECT *
FROM お客様情報
ORDER BY お客様情報.会社名カナ;
としました。

「Aフォーム」のデザインは
連番(非連結),氏名(連結),会社名(連結),住所(連結)・・
となっています。

訳も分からず下記の事をしてみましたが
Private Sub 会社名順表示_Click()
    DoCmd.OpenForm "Aクエリ"
    Dim Bango As Variant
    Bango = "0000"
    連番 = Format(Bango + 1, "0000")
    DoCmd.OpenForm "Aクエリ"
End Sub

『実行時エラー'3164'フィールドを更新できません。』と
エラーになり、HELPを参照すると』フィールドを更新できません。
(Error 3164)
原因:
現在、ほかのユーザーによってロックされているレコードまたは
テーブルのフィールドを更新しようとしました。
ほかのユーザーがレコードやテーブルの処理を完了してから、
もう一度実行してください。
MicrosoftR Access で、Locked プロパティが Yes に設定されている
コントロールの値を変更しようとしました。

と解説にありました。

よろしくお願いします。

【9544】Re:フォームに自動的に採番をしたいのです...
回答  kohji  - 07/6/10(日) 5:18 -

引用なし
パスワード
   大河原 さん おはようございます

>※私には、SELECT文 B, の意味を理解できていません。
Bはその他大勢のフィールド達をイメージしていました
説明不足でした… すみませんです

>「Aテーブル」のデザインは、氏名,会社名,住所・・ となっています。

このAテーブルを参考に以下のような感じで作成してみました

SELECT
Format((SELECT COUNT(*)+1 FROM A WHERE A.ID < T1.ID),'0000') AS 連番,
T1.*
FROM A AS T1;

IDフィールドは主キーです
※必ず主キーを使用してください

以上 よろしくでした

【9548】Re:フォームに自動的に採番をしたいのです...
回答  hatena  - 07/6/10(日) 11:24 -

引用なし
パスワード
   >表形式のフォームに連番を0001〜nnnnまで自動採番をして
>表示したいのですが。
>
>「Aテーブル」から、会社名順に抽出する
>「Aクエリ」を作り、抽出した結果を表示する
>「Aフォーム」を作りました。
>この「Aフォーム」(表形式です)の行の一番左には、"連番"という領域が
>あります。
>この"連番"に1〜自動採番をしたいのですが手法が分かりません。
>
>「Aテーブル」のデザインは、氏名,会社名,住所・・ となっています。
>
>前画面の条件入力画面で「会社名順表示」ボタンクリックした時のイベントは
> Private Sub 会社名順表示_Click()
>    DoCmd.OpenForm "Aクエリ"

ここは、

DoCmd.OpenForm "Aフォーム"

ですよね。
> End Sub です。

>「Aクエリ」の内容は
>SELECT *
>FROM お客様情報
>ORDER BY お客様情報.会社名カナ;
>としました。
>
>「Aフォーム」のデザインは
>連番(非連結),氏名(連結),会社名(連結),住所(連結)・・
>となっています。

会社名カナ には重複は有りませんか。
ないのなら、連番 のテキストボックスのコントロールソースに

=DCount("*", "お客様情報", "会社名カナ='" & [会社名カナ] & "'")

と設定すれば連番が表示されると思います。
クエリの方に、上記の式の演算フィールドを追加しても
いいです。

SELECT *,
DCount("*", "お客様情報", "会社名カナ='" & [会社名カナ] & "'")
AS 連番
FROM お客様情報
ORDER BY お客様情報.会社名カナ;

【9549】Re:フォームに自動的に採番をしたいのです...
発言  大河原  - 07/6/10(日) 11:43 -

引用なし
パスワード
   hatenaさん ありがとうございます。

実は、「ORDER BY お客様情報.会社名カナ・・」で苦戦していました。

>>前画面の条件入力画面で「会社名順表示」ボタンクリックした時のイベントは
>> Private Sub 会社名順表示_Click()
>>    DoCmd.OpenForm "Aクエリ"
>
>ここは、
>
>DoCmd.OpenForm "Aフォーム"
>
>ですよね。

すみません、"Aフォーム"でした。

>
>会社名カナ には重複は有りませんか。
会社名カナには重複が存在します。

>ないのなら、連番 のテキストボックスのコントロールソースに
>
>=DCount("*", "お客様情報", "会社名カナ='" & [会社名カナ] & "'")
>
>と設定すれば連番が表示されると思います。
>クエリの方に、上記の式の演算フィールドを追加しても
>いいです。
>

>SELECT *,
> DCount("*", "お客様情報", "会社名カナ='" & [会社名カナ] & "'")
> AS 連番
>FROM お客様情報
>ORDER BY お客様情報.会社名カナ;

ありがとうございます。
重複を考慮して、工夫してみます。

【9550】Re:フォームに自動的に採番をしたいのです...
回答  hatena  - 07/6/10(日) 11:55 -

引用なし
パスワード
   >>=DCount("*", "お客様情報", "会社名カナ='" & [会社名カナ] & "'")

ごめんなさい。前回の回答に間違いがありました。

=DCount("*", "お客様情報", "会社名カナ<='" & [会社名カナ] & "'")

ですね。

>重複を考慮して、工夫してみます。

重複があるのなら、カナとの組み合わせで、並び順が位置に決まるフィールドが
必要です。主キーがあるのならそれを ID (数値型)として

=DCount("*", "お客様情報",
"会社名カナ<'" & [会社名カナ] & "' OR (会社名カナ='" & [会社名カナ] &
"' AND ID<=" & [ID] & ")")

【9552】Re:フォームに自動的に採番をしたいのです...
質問  大河原  - 07/6/10(日) 14:08 -

引用なし
パスワード
   すみません。
どうしてもわかりませんので、再度質問をさせて下さい。
下記のように、クエリを作成しました。

【クエリの構文】です。
SELECT *
DCount("*", "tacifimport",
"kaisyameikana<'" & [kaisyameikana] & "' OR (kaisyameikana='" & [kaisyameikana] &
"' AND seqno<=" & [seqno] & ")")
AS seqno
FROM tacifimport
ORDER BY tacifimport.kaisyameikana;


【エラーメッセージ】です。
クエリ式'*
DCount("*", "tacifimport",
"kaisyameikana<'" & [kaisyameikana] & "' OR (kaisyameikana='" & [kaisyameikana] &
"' AND seqno<=" & [seqno] & ")")の構文エラー:演算子がありません。

【ヘルプ】の内容です。
クエリ式 '<式>' の <メッセージ> (Error 3075)
メッセージで示された理由のため、入力した式は無効です。フィールド名と区切り記号を正しく
入力したかどうかを確認してから、もう一度実行してください。

*1:フィールド名は確認しました。
*2:区切り記号の位置をいろいろ試しましたが、どうしても解決できません。

よろしくお願いします。

【9555】Re:フォームに自動的に採番をしたいのです...
回答  hatena  - 07/6/10(日) 17:15 -

引用なし
パスワード
   >【クエリの構文】です。
>SELECT *
    ^^
* の後にカンマ区切りが必要です。

>DCount("*", "tacifimport",
>"kaisyameikana<'" & [kaisyameikana] & "' OR (kaisyameikana='" & [kaisyameikana] &
>"' AND seqno<=" & [seqno] & ")")
>AS seqno
>FROM tacifimport
>ORDER BY tacifimport.kaisyameikana;

【9557】Re:フォームに自動的に採番をしたいのです...
お礼  大河原  - 07/6/10(日) 20:45 -

引用なし
パスワード
   kohjiさん ありがとうございました。
やっと実現できました。
今回は「hatena」さんの「答」を参考にさせてもらいました。
しかし「kohji」さんの答えは、とても参考になりました。
今後は、構文をよく理解した上で必要な時に参考にさせていただきます。
私、大河原は吉村,山岸などと開発に携わっておりますが今後も幼稚な
質問をする事になると思いますが、何卒よろしくお願いします。

【9558】Re:フォームに自動的に採番をしたいのです...
お礼  大河原  - 07/6/10(日) 20:48 -

引用なし
パスワード
   hatenaさん ありがとうございました。
成功しました。
先程は単純なミス(SELECT *,)を見過ごしてしまい申し訳ありませんでした。
今後はもっと慎重に、真剣に取り組みます。

私、大河原は吉村,山岸などと開発に携わっていますが今後も幼稚な質問
をする事になると思いますが、何卒よろしくお願いします。

勉強不足を痛感しています。
ありがとうございました。

915 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078201
(SS)C-BOARD v3.8 is Free