
No.3ベストアンサー
- 回答日時:
元のレコードには並び順を指定できるユニークな(重複のない)フィールドは存在しますか
それがないと出来ませんよ
あれば頭から連番を振り3つずつ区切ってやるだけです
条件を満たす主キーという数値型のフィールドがあるとすると
伝票番号:(DCount("*","テーブル名","主キー<" & 主キー) \ 3) + 1
行番号:(DCount("*","テーブル名","主キー<" & 主キー) MOD 3) + 1
この回答への補足
回答頂きありがとうございます。
行番号はうまくいきました。
伝票番号ですが
伝票番号: (DCount("*","売上伝票","番号<" & [ID])\3+1)とすると
[ID]を3で割った番号から連番になってしまいます。
伝票番号: (DCount("*","売上伝票","番号>" & [ID])\3+1)とすると
番号を3で割った番号から連番になってしまいます。
番号から連番にする場合はどうすれば良いでしょうか?
お手数ですがご回答よろしくお願いします。
No.6
- 回答日時:
ゴミ回答のまま退散するのも・・・。
? CNNExecute("INSERT INTO Dempyo SELECT DISTINCT (ID+2) \ 3 AS 伝票番号,伝票日付 FROM DempyoDatas")
True
ID____伝票番号___伝票日付
14____10000_______2007/08/01
15____10001_______2007/08/01
16____1_____________2007/08/01
17____2_____________2007/08/01
と、一旦、仮の伝票番号を付けます。
? CNNExecute("UPDATE Dempyo SET 伝票番号=(伝票番号 + DBMAX('伝票番号', 'Dempyo')) WHERE 伝票番号<100")
True
D____伝票番号___伝票日付
14____10000_______2007/08/01
15____10001_______2007/08/01
16____10002_______2007/08/01
17____10003_______2007/08/01
これで、仮の伝票番号は正規化されます。
※DempoDatas は、もちろん、日々、クリアされることが大前提です。
※DempoDatas にもオートナンバーの[ID]があることも大前提です。
しかし、テキストからダイレクトにテーブルを生成した方が早いし間違いもないと思うのですが・・・。
No.4
- 回答日時:
<DempyoDatas>
ID___伝票番号______行番号___伝票日付_______商品名
1____2007080001_________1____2007/08/01___aaa1
2____2007080001_________2____2007/08/01___aaa2
3____2007080001_________3____2007/08/01___aaa3
4____2007080002_________1____2007/08/01___bbb1
5____2007080002_________2____2007/08/01___bbb2
6____2007080002_________3____2007/08/01___bbb3
例えば、こういうテーブルがあったとします。
[イミディエイト]
? CNNExecute("INSERT INTO Dempyo SELECT DISTINCT 伝票番号,伝票日付 FROM DempyoDatas")
True
<Dempyo>
ID___伝票番号______伝票日付
1____2007080001__2007/08/01
2____2007080002__2007/08/01
このように Dempyo にレコードが追加されます。
[ID]は、オートナンバーにしています。
[イミディエイト]
? DBSelect("SELECT Dempyo.ID, DempyoDatas.行番号, DempyoDatas.商品名 FROM Dempyo INNER JOIN DempyoDatas ON Dempyo.伝票番号 = DempyoDatas.伝票番号")
1;3;aaa3;
1;2;aaa2;
1;1;aaa1;
2;3;bbb3;
2;2;bbb2;
2;1;bbb1;
これで、伝票明細をSelect文で抽出できました。
ここまでくれば、後は、Insert文に組み込むだけです。
[イミディエイト]
? CNNExecute("INSERT INTO DempyoMeisais SELECT Dempyo.ID, DempyoDatas.行番号, DempyoDatas.商品名 FROM Dempyo INNER JOIN DempyoDatas ON Dempyo.伝票番号 = DempyoDatas.伝票番号")
True
<DempyoMeisais>
ID___行番号_______商品名
1___________1_______aaa1
1___________2_______aaa2
1___________3_______aaa3
2___________1_______bbb1
2___________2_______bbb2
2___________3_______bbb3
あたしが希望しているテーブルじゃないと思われるかも知れません。
が、そこはリレーショナルデータベースです。
クエリを作れば済むことです。
<クエリ1>
ID___伝票番号______伝票日付________行番号______商品名
1____2007080001__2007/08/01____________1______aaa1
1____2007080001__2007/08/01____________2______aaa2
1____2007080001__2007/08/01____________3______aaa3
2____2007080002__2007/08/01____________1______bbb1
2____2007080002__2007/08/01____________2______bbb2
2____2007080002__2007/08/01____________3______bbb3
ここでは、クエリを利用していませんが、全てはクエリで再現できます。
要は、ステップを追って攻められたら良いと思います。
No.2
- 回答日時:
以下のマクロをクエリーに組み入れれば出来ると思います。
以下はSQLの内容ですが、テーブル1に番号をいれています。
SELECT テーブル1.番号, 行番号([番号]) AS 番号作成
FROM テーブル1;
以下の条件で回答させていただきます。
1・明細行は不連続で無い
2・明細行はN行目~連続である
Option Compare Database
Option Explicit
Function 行番号(明細行 As Long) As Long
Dim num001 As Double
Dim num002 As Double
Dim num003 As Double
Dim 結果 As Long
num001 = 明細行 / 3
num002 = Int(明細行 / 3)
num003 = num001 - Int(num001)
If (num003 >= 0) And (num003 <= 0.34) Then
結果 = Int(num001) + 1
End If
If (num003 >= 0.34) And (num003 <= 0.67) Then
結果 = Int(num001) + 1
End If
If num003 = 0 Then
結果 = Int(num001)
End If
行番号 = 結果
End Function

No.1
- 回答日時:
質問が明確に理解できませんが。
頻繁に繰り返されることがない作業と理解して
1.テーブルにオートナンバー型のフィールドを追加する
2.以下の更新クエリーを実行する(テーブル名、フィールド名は適切に変更してください)
UPDATE SAMPLE SET SAMPLE.[NO] = ([ID]+1)/3;
4.オートナンバー型のフィールドを削除する
オートナンバー型で作成した連続する数値を3で割っています。
この回答への補足
回答頂きありがとうございました。分かりにくい質問で失礼しました。具体的に書きますとテーブル名明細 フィールド名[商品]・[数量]と言うデータがあります。これをテーブル名伝票 フィールド名[伝票番号]・[行番号]・[商品]・[数量]という形にしたいのです。[伝票番号]は最後に作られた番号+1から連番で作りたいです。作成希望例は下記になります。
最後に作成したデータの伝票番号が5の場合
テーブル名明細 → テーブル名伝票
[商品]・[数量] → [伝票番号]・[行番号]・[商品]・[数量]
商品A,5 → 5,1,商品A,5
商品B,2 → 5,2,商品B,2
商品C,4 → 5,3,商品C,4
商品D,3 → 6,1,商品D,3
商品E,5 → 6,2,商品E,5
商品F,1 → 6,3,商品F,1
商品G,2 → 7,1,商品G,2
商品H,1 → 7,2,商品H,1
次回は
商品I,5 → 8,1,商品A,5
商品J,2 → 8,2,商品B,2
商品K,4 → 8,3,商品C,4
商品L,3 → 9,1,商品D,3
このような形にしたいのです。よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 伝票番号、品番、在庫としてマクロでもAccessでもデータ表を作りたいのですが、ご指導お願いします 1 2022/11/13 23:48
- メルカリ らくらくメルカリ便でクロネコヤマトを使って商品を送ってもらいましたが数日経っても伝票未登録のままです 1 2022/09/29 19:56
- 運輸業・郵便業 【至急】 国際便のインボイスについて、伝票番号が空欄なのですが、伝票はヤマト運輸さんのサイトを見て自 2 2023/03/16 14:41
- 郵便・宅配 ゆうパック。追跡番号だけで、着払いか?、元払いか?を判定することはできる? 1 2022/07/02 14:05
- Visual Basic(VBA) EXCEL関数LOOKUPとFILTERについての質問です 1 2022/12/21 05:53
- 戸籍・住民票・身分証明書 マイナンバーカードの更新について教えてくださいな マイナンバーカード更新の時期が来たので携帯で済ませ 2 2023/07/31 01:47
- Java Java 配列<選挙> 4 2023/07/31 15:07
- 確定申告 以前私の名前で利用者識別番号を作りました。 その番号で、主人の源泉徴収票のデータを入力して、 主人が 2 2023/03/02 10:02
- 運輸業・郵便業 クロネコヤマト宅急便で荷物を取りに来てくれる電話番号は何のですか後伝票を書いてくれる番号は何時にかけ 2 2022/04/27 21:11
- メルカリ メルカリで、らくらくメルカリ便のネコポスでコンビニで発送しました。 昨日夕方18時くらいに発送しまし 4 2023/07/27 07:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSでテキストデータ...
-
ファイルメーカーからCSVへのエ...
-
accessフォームのボタン→レポー...
-
エクセルでリピート率
-
商品番号を入力すると、商品名...
-
Word差し込み印刷 数式について
-
Accessのフォームで思った順番...
-
誰か教えてください
-
PL/SQLのエラー処理について
-
差し込み後、元データを変更し...
-
identity属性の列に自動採番(SQL)
-
エクセルに見えない文字(JISX0...
-
jQueryで、カラム幅を変更でき...
-
複数テーブルのGROUP BY の使い...
-
NO WAR NO ABE
-
EXCELでの数式入力方法
-
for whichの使い方
-
select文で int を yyyy-mm-dd...
-
フリーマーケット!
-
[WHS]定数宣言の際にリテラル文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
updateでグループ化
-
LEFT JOIN あいまいな外部結合
-
Accessのフォームで思った順番...
-
2つのテーブルを結合して最大値...
-
商品番号を入力すると、商品名...
-
orace SQL文のエラー(ORA-0092...
-
IDの欠番
-
特定条件での連番の振り方を教...
-
文字列のあるキーワードから開...
-
エクセルでリピート率
-
Word差し込み印刷 数式について
-
アクセスのフォームで連動した...
-
Accessレポート 複数条件での集計
-
各伝票に対して明細を1行目だけ...
-
ACCESSでフォーム上のオブジェ...
-
ACCESS フォーム入力で...
-
マクロをご教示ください。
-
accessクエリの結果の縦横表示...
-
正規化の問題
-
Accessの追加クエリの方法(重...
おすすめ情報