過去の桐井戸端BBS (桐ver.7)
1265 横に20個ぐらいある項目を縦にデータとして入れたい TOMO 1999/2/6-16:50
初めまして、こんにちは。
どなたか教えていただきたいのですが、
横にずらずらとある項目(20個ぐらい)を縦にデーターとして入れることは出来ますか?
もし、出来るのなら何を使ってやればいいのでしょうか?
一括処理を使わずに出来ますか?
宜しくお願いします。
1266 Re: 宮城 1999/2/6-17:26
記事番号1265へのコメント
TOMOさんこんいちは。
 項目1から項目20,さらに項目Aを持つ表1があり、現在レコードが一件。
これに、項目Aに、項目1から項目20までの値を放り込んだ20件のレコードを追加するということで
いいんでしょうか?
 その他項目も何かありそうですが、とりあえずその前提でいきます。

 表1を表2に全項目書き出してください。
 表1に表2を読み込みます。このとき、表1の項目Aに表2の項目1を読み込むようにしてください。
 読み込みを繰り返します。こんどは、表1の項目Aに表2の項目2を読み込んでください。

 この要領で項目20まで繰り返します。

 ただし、やってみるとわかるように、めんどくさいのと操作をミスればそれまでです。
一括処理を使わずにと書かれていますが、是非一括処理にすべき事例だと思います。
1267 Re: 悲しげ 1999/2/6-18:13
記事番号1265へのコメント
どもっ、TOMOさん(私の知っているTOMOさんではないですよね?)
さて、
>横にずらずらとある項目(20個ぐらい)を縦にデーターとして入れることは出来ま
>すか?
>もし、出来るのなら何を使ってやればいいのでしょうか?
>一括処理を使わずに出来ますか?

桐がv5なのかv7.*なのか判りませんが、いずれでも扱い方法はさほど違わないように思いますので、
とりあえず続けます。
ここでお尋ねのことが、単なる入力方法のことなのか、表の構造の問題なのか?
ふたとおり考えられます。

1)入力操作上での問題
20項目もあれば当然1画面内には収まりませんから、入力時にはどんどんスクロールして行って
見にくくなると云うことなのかも知れません。
その場合は、任意の項目で桁固定をさせると幾分見やすくなるかも知れませんが、縦に入力して行きたい
と云うことであれば、画面カード帳票で1レコード分を1枚のカードに見立てて入力する方法が
いいと思います。
画面カード帳票(フォーム)は、v5でもv7.*でも同様でして、自動作成させると横の項目が縦に配列されます。

2)表の縦横の構成の問題

A表
   1月  2月  3月 ・・・・・12月
数量 10   12   30   25
担当 むつ きさ やよ      しわ 

B表
   数量 担当
1月 10   むつ
2月 12   きさ
3月 30   やよ
  ・・・・・
12月 25  しわ

A表をB表のように変更したい。ついては、既入力データをこのような構成に移行させたいと云うことで
あれば、これは一括処理を使わないと難しいと思います(が、簡単な一括処理で可能です)。
1276 Re: TOMO 1999/2/8-11:05
記事番号1267へのコメント
おはようございます。
宮城さん、悲しげさん。あんな短い文で分かって下さって有り難うございます。
(あ、私は多分悲しげさんのお知り合いの方ではないと思います。すみません。)
実は、現在私が使っている一括処理では確かにずらずらある項目をデーターとして入れることは
出来ています。(私が作ったものではないのですが・・)
その表とゆうのが・・・
[月],[客先名],[項目1]〜という項目で出来ているモノなのですが、
  *客先名には100件ぐらいの客先が入っています。
  *項目1〜・・には金額が入っています。
客先名で絞り込んでから変数を使って代入や行追加をしながら、

1月/2月/・・・・・12月/合計とゆう様な表をレポート印刷させています。

でも、これだと「客先名を毎回入力しなくてはいけない」&「どんな客先があったか覚えていない」という
状態で印刷が思うように出来ません。
そこで、現在データーとして入っている客先をすべて一度に印刷するという事をしたかったのですが、
他の人が作った一括処理の内容がいまいち理解できない(初心者です。)
ので、もっと簡単に出来たらなぁ・・・と思ったのですが。

どんなものでしょう?

現状の一括処理をそのまま使用できると一番良いのですけれど・・・何分意味不明なのでお知らせする
ことが出来ません。ごめんなさい。
1277 Re: 宮城 1999/2/8-12:41
記事番号1276へのコメント
 TOMOさん、こんにちは。

>そこで、現在データーとして入っている客先をすべて一度に印刷するという事をした
>かったのですが、他の人が作った一括処理の内容がいまいち理解できない(初心者です。)

 これだけだったら、簡単ですよ。
お話から、勝手にVer.5とみなして、進めちゃいますが、客先で文字符号順に整列させ、
選択→単一化、重複判定項目は客先のところで「する」。
これで同一客先があった場合、2件目からは非選択状態になってますので、一覧表でだせば・・・。

 おっと、レポート印刷ってことは、Ver.7.1ですか? だとしたら、失礼しました、ですが、この部分は
似たようなもんです。

 ただ、ダブりを排除した客先一覧作ったところでどうなるもんでもないと思います。
もう少しやりたいことを整理してくれませんか。

>客先名で絞り込んでから変数を使って代入や行追加をしながら、
>
>1月/2月/・・・・・12月/合計とゆう様な表をレポート印刷させています。
>
>でも、これだと「客先名を毎回入力しなくてはいけない」&「どんな客先があったか
>覚えていない」という状態で印刷が思うように出来ません。

 こういうニーズでしたら、客先名で並べ替えておいて、検索→比較式→部分一致検索するのが
お勧めです。
かなり融通の利く検索ができますし前後行もみえますから、大分楽になると思います。
1280 Re: TOMO 1999/2/8-17:09
記事番号1277へのコメント
宮城さん(私のパソコン、「みやぎさん」で変換すると宮蟻酸って出ます。変なの)

こんにちは。

説明って難しいですね。
宮城さんのメールに一括処理のプログラムを送ってしまいたいっ!!
それは冗談ですが。(笑)

一括処理なんですが、客先名を入力するとそれを対象にしてその客先のみを計算させて
レポート印刷させています。
なので、客先が50件あったら"客先名を入力して下さい="で50回入力しなければなりません。
で、この場合だと1件ずつ入力して50枚の用紙を印刷する事になる。
この50件の客先名を全部覚えていれば入力でも別に問題はない(面倒くさいけど)のですが、
どんな客先があったか忘れてしまったときはいったん表を開いて今ある客先の一覧を印刷させて、
それを見ながら入力している状態です。

あたしが出来たらいいなぁと思っていることは、この客先の一覧を自動的に入力(?)してくれて
印刷をしてくれればなぁ・・・と言うことなのですが・・。

分かっていただけましたですか?面倒な質問でごめんなさい。
1281 Re:連続印刷のサンプル ITO 1999/2/8-19:43
記事番号1280へのコメント
>一括処理なんですが、客先名を入力するとそれを対象にしてその客先のみを計算
>させてレポート印刷させています。
>
参考まで、次の一括処理で可能と考えます。私がV2の頃に作成したものを手直しして、記載してみました。
文字列の変数は、&客先名印刷だけです。なお、*( )行は、必要に応じて追加してみて下さい。

名札 連続印刷
代入 &選択件数=0 , &行位置=0
手続き実行 全相手先別印刷
分岐 ***** ・・・・全て終了後に行く先
名札 全相手先別印刷 ・・・・・この部分は、良く検討必要
手続き実行 印刷前処理
選択 [客先名]      
<客先のみの計算・レポート印刷の一括処理部>
      分岐 (&行位置=&場所番号),リターン
      分岐 全相手先別印刷
名札 印刷前処理
       整列 "客先名順"
*    ( 選択 条件名="****"  )
*    ( 分岐 (&選択件数=0),リターン)
     絞り込み 単一化={[客先名]}
    手続き実行 (&客先数=0),客先数
    手続き実行 (&行位置>=1),行位置2以降
    手続き実行 (&行位置<1),行位置1
     位置指定 行番号=&行位置
       代入 &客先名印刷=[客先名]
     解除 *
    手続き終了
名札 客先数
       代入 &客先数=&選択件数
    手続き終了
名札 行位置1
       代入 &行位置=1
    手続き終了
名札 行位置2以降
       代入 &行位置=&行位置+1
    手続き終了
名札 リターン
    手続き終了

これは、あくまで参考ですから、試行錯誤してみて下さい。
もっとスマートな方法もあると思いますが。
1282 Re: ITO 1999/2/8-20:01
記事番号1281へのコメント
一部訂正します。また、ずれていなければ良いのですが。/他に間違いがあったらごめんなさい。
変数は、事前に宣言してある事とします。
名札 連続印刷
代入 &選択件数=0 , &行位置=0 ,&客先数=0
手続き実行 全相手先別印刷
分岐 ***** ・・・・又は、手続き終了 全て終了後に行く先
名札 全相手先別印刷 ・・・・・この部分は、良く検討必要
手続き実行 印刷前処理
絞り込み [客先名] &客先名印刷
<客先のみの計算・レポート印刷の一括処理部>
      分岐 (&行位置=&場所番号),リターン
      分岐 全相手先別印刷
名札 印刷前処理
       整列 "客先名順"
*    ( 選択 条件名="****"  )
*    ( 分岐 (&選択件数=0),リターン)
     絞り込み 単一化={[客先名]}
    手続き実行 (&客先数=0),客先数
    手続き実行 (&行位置>=1),行位置2以降
    手続き実行 (&行位置<1),行位置1
     位置指定 行番号=&行位置
       代入 &客先名印刷=[客先名]
     解除 *
    手続き終了
名札 客先数
       代入 &客先数=&選択件数
    手続き終了
名札 行位置1
       代入 &行位置=1
    手続き終了
名札 行位置2以降
       代入 &行位置=&行位置+1
    手続き終了
名札 リターン
    手続き終了
1283 Re: ITO 1999/2/8-20:09
記事番号1282へのコメント
I>一部訂正します。また、ずれていなければ良いのですが。/他に間違いがあったらごめんなさい。
>変数は、事前に宣言してある事とします。
>
>      分岐 (&行位置=&場所番号),リターン
この部分を次のとおり訂正します。

分岐 (&行位置=&客先数),リターン

恥ずかしながら、手直しのミスでした。/他に間違いがあったらごめんなさい。
本当に一括処理は、試行錯誤ですね。
1284 Re: 宮城 1999/2/8-22:24
記事番号1280へのコメント
 TOMOさんこんばんは。

 一括処理の構造、ざっと次のとおりでしょうか。

1.変数宣言等
2.初期処理等
3.メニュー
4.入力セクション
5.プリントセクション
6.終了

 で、1.文字列変数宣言の中に&印刷対象客先なんてのがあり、5.プリントセクションの最初に、

 (1).キー入力(かな?)"客先名を入力してください=",&印刷対象客先
 絞り込み(Ver.5なら選択)[客先名]_&印刷対象客先

なんてのがあり、それから、(2).編集を行っている部分、(3).印刷部分(一覧表印刷かレポート印刷)があり、
最後が(4).次に行きますかかなにかで、(1).に戻すか終わるかの分岐。

 なかなか「親切な」プログラムですね。
ひょっとして、組んだ人のご機嫌、損ねませんでした?
 これだと、一件ずつプリントになっちゃうけど、ひょっとすると(3)の前に(4)があるのかもしれませんね。
だとすると、

>客先が50件あったら"客先名を入力して下さい="で50回入力しなければ
>なりません。

と書かれていることを50回繰り返すようにすればいいわけです。それから、対象客先名を入力させる
のでなく、客先名を一件ずつ表示させ、編集印刷対象とするか判断させればいいわけです。
(3)の前に(4)型だと印刷対象ワークファイルを書き出しているか、本体表内に印刷対象判定とか
いう項目を持ち、プリント前に絞り込んでるはずです。

 実はこれって結構簡単なんです(だから、書き込もうかという気をおこしたんですが)。

a.まずは文字列の変数宣言の中に&印刷対象判定(本体表内にある前提)を追加します。
b.次に(1)を行頭に*を追加しコメント文にする(無視されます)。
C.(2)を次の行ではさみます。

ジャンプ 行番号=先頭
繰り返し(.NOT #終端行)
 代入 &印刷対象客先=[客先名]
 キー入力 (座標等省略)"印刷しますか(はい/いいえ)",(省略),&印刷対象判定
 分岐(&印刷対象判定="いいえ"),次レコードへ
 行訂正 [印刷対象判定]="する"
 (2)
 名札 次レコードへ
 ジャンプ 行番号=次行
繰り返し終了

D.印刷対象判定型だとして次の行を追加。
絞り込み [印刷対象判定]{"はい"}

E.(4)をコメント化。あと、最後にしなくてもいいけど、[印刷対象判定]をクリア。
置換 [印刷対象判定]=""

 これだけ。先頭のレコードに行き、繰り返し処理開始。「てんNOT #終端行」は最後のレコードの
次にいくまで。
後は毎回の処理。この客はいらんなら"いいえ"で毎回処理のお終いへとばす。
次のレコードへ移動。繰り返し・繰り返し終了の中を#終端行にくるまで繰り返すわけです。
他には代入と行訂正で変数値と項目値をキャッチボールしているくらい。

 これだけのことにトライするか、50回客先インプットを続けるか、です。
慣れとマニュアル・ヘルプ(全部じゃなくて調べたいところだけでいいんですよ)に取り組む根性次第だと
思いますが・・・。

 最後に、やはり、Ver.5かVer.7.1かでは大分違いますので、これははっきり書いておいてください。
ここのお約束ですから。あと、辞書登録もしといてください。
1286 簡単にできます!! ISSEI 1999/2/9-00:26
記事番号1265へのコメント
TOMOさんが使っておられる桐のバージョンは何ですか。僕のはver7.1(up1)なのですが、
TOMOさんがやりたいことが簡単にできました。やり方は表を開いた状態で<ファイル>→
<書き出し>→<転置>で後は項目を選択するだけで転置された表が新しく作成されます。
僕も新しい発見でした。この機能は前のバージョンではあったのでしょうか?
是非お試しください。
1288 Re:皆様有り難うございます TOMO 1999/2/9-09:45
記事番号1265へのコメント
おはようございます。

皆様、たくさんの考えを有り難うございます。
まだ、「わかりました!!」とは言えないですが、皆様のヒントとマニュアル見ながら戦ってみようと思います。
それでも分からない時は、また助けて下さい。
宜しくお願いいたします。

遅くなりましたが、Ver7.0の桐を使用しております。
(あたしの中では、Ver7.0っていうのは当たり前なのですが、いろんなVerがあるんですよね、ごめんなさい。)
あ、宮城さん辞書登録しました。もうばっちりです。

有り難うございました。
1291 Re: 宮城 1999/2/9-18:54
記事番号1284へのコメント
 TOMOさん、こんばんは。

 よく見るとトンマをやっていました。あのままだと客先名表示されませんね。

 変数宣言 文字列に&文字列ダミーを追加してください。

 この部分を次のように差し替え。

差し替え前

> 代入 &印刷対象客先=[客先名]
> キー入力 (座標等省略)"印刷しますか(はい/いいえ)",(省略),&印刷対象判定

差し替え後
  代入 &印刷対象客先=[客先名]¥
    ,&文字列ダミー=&印刷対象客先+"様は印刷しますか(はい/いいえ)"
  キー入力 (座標等省略)&文字列ダミー,(省略),&印刷対象判定

 ごちゃごちゃしたプロンプトは変数を使って直前に編集してしまいます。¥とカンマは、行あたりの
表示幅を狭めるというか、変数名の頭を揃えてやることによって見やすくするテクニック
(私のオリジナルじゃありません。ただし、絶対お勧め)。

 私のレベルもこんなもんですから、たいしたもんじゃないです。
作って、やってみよ、で10回近くは落ちます。
だから、いつまでに直るのかとかと迫られると、「直るまで直すんじゃ」とキレたりして・・・。
全データ書き換えちゃったとか、消しちゃったとか、私しか知らない内緒のちょんぼは数知れず・・・。
そこからリカバリするのが腕。バックアップはとっておきましょう。

 それではご検討をお祈りします。

戻る