一年間の日付を一度に楽に入れたい


質問

桐のファイルにデータを入力するときの入力を楽にする方法があれば教えてください。

表にデータを入力するのですが、2006年1月1日から、今日までの日付を自動的に入力する方法があればと思い考えたのですが、
関数の組み合わせ方法などがうまく行かないのでエラーになってばかりなので詳しい方からのアドバイスを頂ければと思います。

回答

回答1
マニュアル操作でやるとすれば、必要な行数をあらかじめ作っておいてから、下の式で置換すればいいですよ。

#日数加算( #直前値( [日付] , d&Q2005/12/31&Q ) , 1 )

ちょうど作り置きの式が2006年1月1日からの式だったので、コピペしました。項目名が異なっていれば、修正してください。
行追加の方法は、Ctrl+Alt+↓で改行方向を下向きに設定して、次にEnterを押し続けると、数百行ならすぐにできます。

回答2

表を新たに作る方法です。
変数宣言 固有,文字列 {&AS表名=&Qikatusyosinsya.tbl&Q,&AS項目名=&Q日付&Q}\
     ,固有,長整数{&ALFrom,&ALTo,&ALday}
 手続き実行 numberset(&ALFrom,&Q年を入力&Q,2006)
 if (&ALFrom)
  call   numberset(&ALTo,&Q月を入力&Q,1)
  if (&ALTo)
   call  numberset(&ALday,&Q日を入力&Q,1)
   if (&ALday)
    call 表作成(&AS表名,&Q日時,&Q+&AS項目名)
    call 表追加(&AS表名,&AS項目名,&ALFrom,&ALTo,&ALday)
   End
  End
 End
 表 &AS表名 , 終了状態=&ALTo
 表形式編集
 終了 表 *

Proc numberset(参照 Long &AN番号 , 文字列 &ASメッセージ , 長整数 &ALfirst )

桐8では開始位置↓を指定しないと構文エラーになった。知らなかった

  キー入力 (10,10),プロンプト = &ASメッセージ , モード = 無変換 \
  , 上書き = する ,初期値 = &ALfirst,終了状態 = &ALfirst,&AN番号
End

Proc 表作成(Str &AS名前,Str &AS項目名データ型並び)
 変数宣言 Str{&AStmp作業=&QTemp.k3&Q}
 var 整数{&AIend=#L(&AS項目名データ型並び),&AIcount=#L(#S(&AS項目名データ型並び,&Q,&Q,&Q&Q))}
 var Int{&AIデータ要素数=(&AIend-&AIcount+1)/2}
 印字開始 &AStmp作業, 終了状態=&AIend
 印字 &Q###&Q
 印字 &Q### WIN桐 00&Q
 印字 &Q###&Q
 For &AIcount=1,&AIデータ要素数
  印字 &Q&Q&Q&Q+#対応文字列(&AS項目名データ型並び,&AIcount*2)+&Q&Q&Q&Q,&Q,&Q\
     ,&Q&Q&Q&Q+#対応文字列(&AS項目名データ型並び,&AIcount*2-1)+&Q&Q&Q&Q
 end
 印字終了 改頁=しない
 表作成 &AS名前,定義ファイル=&AStmp作業,モード=専有,終了状態=&AIend
手続き定義終了

Proc 表追加(Str &AS表名,Str &AS項目名,Long &AL開始,Long &AL終了,Long &AL日)
 var Long {&ALcount},Int{&AIend},date{&AD開始}
 &AD開始=#日時値(#Str(&AL開始)+&Q/&Q+#str(&AL終了)+&Q/&Q+#STR(&AL日))
   繰り返し (&AD開始&L#日時値)
    行追加 終了状態=&AIend, &AS項目名 = &AD開始
    &AD開始=#日数加算(&AD開始,1)
   end
   終了 表 編集対象表
End


トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-06-03 (金) 19:20:58 by pukiwiki 1.5.4