過去の桐井戸端BBS (桐ver.9)
27809 フォームの#明細連番の値を表に取り込みたい とまと 2004/10/02-23:40
とまとです。いつもお世話になっています。

伝票形式フォームで入力した表(A表)があります。
今回、表の損傷対策として同じ内容の表を別名(B表)で作成し、
A表に追加入力したデータを併合処理でB表に反映させたいと思っています。

ところが、伝票形式フォームで入力しているため、[伝票番号]が明細の数だけあり、
これだけでは併合の照合項目にすることは不可能です。

そこで、一意の識別子を作るため項目[枝番]を設け、[伝票番号]と[枝番]で照合しようとし、
既存のデータは一括処理で[枝番]にデータを入れました。

ところで、#明細連番を使ってフォーム上では枝番を表示できるのですが、
この値を表に取り込むことはできないのでしょうか。

#明細連番はフォームとレポートにしか使用できないということなので、
今はやむなく次のようなイベントで[枝番]の値を求めています。

 表 A表
   絞り込み [枝番]{#未定義}
   項目集計 [伝票番号]
   &今回最小伝票番号=&最小値
   &今回最大伝票番号=&最大値
   繰り返し &受付番号=&今回最小伝票番号,&今回最大伝票番号
    絞り込み [伝票番号]{&伝票番号}
    置換 [枝番]=#連番
    絞り込み解除 1
    条件 (#終端行) 繰り返し中止
   繰り返し終了
   解除 *

桐9-2004です。よろしくお願いします。

27818 Re:#明細連番の値を表に取り込みたい 悲しげ 2004/10/04-15:20
記事番号27809へのコメント
実はやろうとしていることが殆ど読めておりませんが(^^;)、
「#明細連番」が使えていると云うことは、[グループ項目]が
設定されているフォームであると察することができます。

で、#明細連番では、各グループの先頭レコードが1になる訳
だから、当該フォームを開いた状態(グループ選択状態)で
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
グループ指定 先頭,終了状態=&実行リターン
繰り返し
 置換 終了状態=&終了,[枝番]=#連番
 *または 置換 終了状態=&終了,[枝番]=#行番号
 グループ指定 次,終了状態=&実行リターン
 条件(&実行リターン<1) 繰り返し中止
繰り返し終了
*グループ指定 先頭,終了状態=&実行リターン
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
あたりでもいいような気が・・・。

ただし、それ以前に

>表の損傷対策として同じ内容の表を別名(B表)で作成し、
>A表に追加入力したデータを併合処理でB表に反映させたい

とするよりも、目的が本当に「表の損傷対策」なのであれば、
元表をバックアップ的にリネームコピー保存しておいた上で、
直接その表で入力することで十分ではないかと?(?_?)


ps.

> 繰り返し &受付番号=&今回最小伝票番号,&今回最大伝票番号
>  絞り込み [伝票番号]{&伝票番号}

&受付番号と&伝票番号、どちらかがタイプミスですよね?

27829 Re:#明細連番の値を表に取り込みたい とまと 2004/10/04-17:30
記事番号27818へのコメント
悲しげさん、ありがとうございます。
>〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
>グループ指定 先頭,終了状態=&実行リターン
>繰り返し
> 置換 終了状態=&終了,[枝番]=#連番
> *または 置換 終了状態=&終了,[枝番]=#行番号
> グループ指定 次,終了状態=&実行リターン
> 条件(&実行リターン<1) 繰り返し中止
>繰り返し終了
>*グループ指定 先頭,終了状態=&実行リターン
>〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
>あたりでもいいような気が・・・。

すでに蓄積済みのデータはこのために一括処理を実行して[枝番]は取得済みです。
問題は今後の追加データの入力時に[枝番]を取得するために、フォームに#明細連番を
ソースとするテキストオブジェクトを設けると値が表示されるので、
その値を表に取り込むことはできないかということなのです。
そうするとイベントの一般手続きは必要なくなるので・・・

>目的が本当に「表の損傷対策」なのであれば、
>元表をバックアップ的にリネームコピー保存しておいた上で、
>直接その表で入力することで十分ではないかと?(?_?)

最近、このアプリケーションをMOを介して別のパソコンに取り込んだ際、
A表が破損していました。幸い元のパソコン内の同表は無事でしたが、
仮にA表が壊れており、それをバックアップするとバックアップした表も同じことになるので、
同じ内容のB表を設け、A表の追加分や更新分を併合処理によってB表に反映させようと考えています。

>> 繰り返し &受付番号=&今回最小伝票番号,&今回最大伝票番号
>>  絞り込み [伝票番号]{&伝票番号}
>
>&受付番号と&伝票番号、どちらかがタイプミスですよね?
>
仰せのとおりです。「&伝票番号」とすべきでした。
27830 Re:#明細連番の値を表に取り込みたい 悲しげ 2004/10/04-17:58
記事番号27829へのコメント
相変わらず読めていないまま補足説明を続けますと(^^;)

>すでに蓄積済みのデータはこのために一括処理を
>実行して[枝番]は取得済みです。

それは承知しておりますが、枝番なるものが常に#明細連番と
同じならば、枝番取得済みのグループについて再連番を振ってもダメと
云う訳ではないと思っていました。
でも、ちょっと遅くなるかもしれないので、枝番取得済グループについては、再連番を振らないとすれば
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
グループ指定 先頭,終了状態=&実行リターン
繰り返し
 条件([枝番]<1) 置換 終了状態=&終了,[枝番]=#連番
 *↑グループ移動直後は常に1行目なので
 グループ指定 次,終了状態=&実行リターン
 条件(&実行リターン<1) 繰り返し中止
繰り返し終了
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
のような方法も有り得ます。
ただ、この方法を勧めている訳ではありません。



>仮にA表が壊れており、それをバックアップするとバックアップし
>た表も同じことになるので、

確かに既に壊れた表をバックアップしても無意味なのは云うまでもありません。
私が言及したのは、当然ながら、壊れる前の状態の表についてであります。(^^;)
なおかつ、私が云った

>元表をバックアップ的にリネームコピー保存しておいた上で、

とは、MOにではなく「元のパソコン内」でのリネームコピーのつもりでした。
MOにならリネームする必要もありませんし。



私の疑問は(きっと読めてないからでしょうけど)、表が壊れるかもしれないから、
A表をB表にリネームし、そのB表での更新結果を併合等でA表に書き戻すと云う発想は、
何だか本末転倒のような印象が・・・・。

27832 Re:#明細連番の値を表に取り込みたい 悲しげ 2004/10/04-18:08
記事番号27829へのコメント
もう1点補足。

>フォームに#明細連番をソースとするテキストオブジェクトを設け
>ると値が表示されるので、その値を表に取り込むことはできないか

とまとさんが希望しているのが、表の項目値として取得したいと云うことだとすれば、
それを取り込むことはできないと思います。
#明細連番の値は、実態的な項目値としてではなく、何と云うか、
フォーム上で「バーチャルに表示しているだけ」みたいな・・・・。
私が書いたのは、実態的な表の項目値として#明細連番と同じ値を取得する一例です。

27836 Re:#明細連番の値を表に取り込みたい とまと 2004/10/04-19:35
記事番号27830へのコメント
悲しげさん、重ね重ねありがとうございます。
>〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
>グループ指定 先頭,終了状態=&実行リターン
>繰り返し
> 条件([枝番]<1) 置換 終了状態=&終了,[枝番]=#連番
> *↑グループ移動直後は常に1行目なので
> グループ指定 次,終了状態=&実行リターン
> 条件(&実行リターン<1) 繰り返し中止
>繰り返し終了
>〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
>のような方法も有り得ます。
>
視野が広がったような気がします。

既存のデータは一括処理を実行して[枝番]を取得しているので、
今後の入力についてはフォームに#明細連番を設け、その値を[枝番]に取り込めないかというものです。
その方法がわからないので、新たに入力したデータはイベントの一般手続きで
[枝番]が未定義のものを絞り込み、さらに伝票番号で絞り込んだうえ[枝番]を
#連番で置換することしか思いつきませんでした。

>私の疑問は(きっと読めてないからでしょうけど)、表が壊れるか
>もしれないから、A表をB表にリネームし、そのB表での更新結果
>を併合等でA表に書き戻すと云う発想は、何だか本末転倒のような
>印象が・・・・。
>
A表がフォームの編集対象表でA表の[枝番]を取得した後、B表(バックアップ表)を作成しました。
このA表の追加分や更新分を併合処理でB表に反映しようとするもので、
決してB表の内容をA表に書き戻そうとするものではありません。
27837 Re:#明細連番の値を表に取り込みたい とまと 2004/10/04-19:47
記事番号27832へのコメント
悲しげさん、さらに重ね重ねありがとうございます。
>
>とまとさんが希望しているのが、表の項目値として取得したいと云う
>ことだとすれば、

まさにそのとおりです。せっかくフォーム上に表示されるのだから、それを取り込めないかと考えました。

>それを取り込むことはできないと思います。

残念ですね!

いつも悲しげさんには大変お世話になっています。
今後ともよろしくお願いします。


27840 Re:#明細連番の値を表に取り込みたい 悲しげ 2004/10/04-21:29
記事番号27836へのコメント
とまとさん wrote

>A表がフォームの編集対象表でA表の[枝番]を取得した後、B表(バック
>アップ表)を作成しました。このA表の追加分や更新分を併合処理でB表
>に反映しようとするもので、決してB表の内容をA表に書き戻そうとする
>ものではありません。

う〜ん。
つーことは、私の書いたことはA表とB表の関係が単に逆であるだけのように読めますから、
本末転倒との印象は変わりません。(^^;)
多分、書かれていない他の理由があるのでしょうか?
あるいは、「バックアップ」の意味が異なるのか?


27841 Re:#明細連番の値を表に取り込みたい 悲しげ 2004/10/04-21:41
記事番号27836へのコメント
とまとさん wrote

>その方法がわからないので、新たに入力したデータはイベントの一般手続きで
>[枝番]が未定義のものを絞り込み、さらに伝票番号で絞り込んだうえ[枝番]を
>#連番で置換することしか思いつきませんでした。

あぅ、あの一括処理はそのような意味だったですか?
もしかしたらそうかもしれない・・・・とは思いつつ、
いまいち読みとれませんでした。(^^;)
最初から言葉での説明があれば良かったですね。
私のは、単にグループ選択状態を利用して、既述を簡素化しているだけで、
やってることはさほど変わらなさそうです。


27842 Re:#明細連番の値を表に取り込みたい 悲しげ 2004/10/04-21:59
記事番号27809へのコメント
[伝票番号]+[枝番]ではなく、併合等のための絶対的なID番号(通し番号)を
自動取得する方法として、カウンタ型項目を利用すると云う方法も有り得そうです。
私は一度も使ったことがありませんけど。

27847 Re:#明細連番の値を表に取り込みたい とまと 2004/10/05-10:21
記事番号27842へのコメント
悲しげさん、ありがとうございます。

>[伝票番号]+[枝番]ではなく、併合等のための絶対的なID番号(通し番号)
>を自動取得する方法として、カウンタ型項目を利用すると云う方法も有り得
>そうです。
>
A表にデータ型をカウンタとする新たな項目を設け、編集モードに切り替えると、連番が入りました。
また、フォーム(伝票形式)上から入力しても継続した連番が入りました。

併合の照合項目として利用するのならこれで十分ですね。
27850 Re:#明細連番の値を表に取り込みたい とまと 2004/10/05-11:42
記事番号27840へのコメント
悲しげさん、ありがとうございます。

>私の書いたことはA表とB表の関係が単に逆であるだけ
>のように読めますから、本末転倒との印象は変わりません。(^^;)
>多分、書かれていない他の理由があるのでしょうか?
>あるいは、「バックアップ」の意味が異なるのか?
>
私の意図したことは、

@A表が破損しては困るので同じ内容の表(B表)を同じフォルダ内に持つ。
AA表の更新内容をB表に反映させる。
B前記Aに際して、「ファイル複写」が考えられるが、仮にA表に損傷があった場合のことを考えると
「併合」で処理する方が望ましいのではないか?
C「併合」で処理する場合、照合項目として一意性の項目が必要なので[枝番]を設け、[伝票番号]と[枝番]で一意化を図る。
D既存のデータはこのために一括処理を実行して[枝番]を求める。
E今後の入力についてはフォームに#明細連番のテキストオブジェクトを設け、その値をA表の[枝番]に取り込めないか?
F前記Eの方法がわからないので、イベントの一般手続きで[枝番]を求めている。

というものでした。

[枝番]のこだわったのは一般的なデータベースの解説書にあるデータモデルを念頭に置いていたからです。

戻る