(現在 過去ログ29 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■4569 / inTopicNo.1)  フォームでの行複写
  
□投稿者/ 通りすがり -(2009/04/06(Mon) 10:49:55)
    表形式フォームで、レコードセレクタでの(複数)選択行を新規行(終端行)に複写したいのですが…
    何か良い方法はありますでしょうか?
    カウンタ項目や計算項目やグループ項目はナシでも…

    [カウンタ],[日時1]:未定義禁止,[文字列1],[文字列2],[数値1],[計算項目1]:[数値1]x2
    1,2009/04/06,あ,い,7,14
    2,2009/04/07,あ,う,6,12
    3,2009/04/07,え,う,2,4
引用返信 [メール受信/OFF] 削除キー/
■4570 / inTopicNo.2)  Re[1]: フォームでの行複写
□投稿者/ ONnoji -(2009/04/06(Mon) 11:38:08)
引用返信 [メール受信/OFF] 削除キー/
■4571 / inTopicNo.3)  Re[1]: フォームでの行複写
□投稿者/ eo -(2009/04/06(Mon) 11:57:39)
    > 表形式フォームで、レコードセレクタでの(複数)選択行を新規行(終端行)に複写したいのですが…


    選択行の[日時1],[文字列1],[文字列2],[数値1]をtmp.tblとでもして書き出し、絞り込みを解除して、終端行にこれを読み込むではどうでしょう?


引用返信 [メール受信/OFF] 削除キー/
■4574 / inTopicNo.4)  Re[1]: フォームでの行複写
□投稿者/ 今村 誠 -(2009/04/06(Mon) 13:27:37)
    通りすがりさんこんにちは
    > 表形式フォームで、レコードセレクタでの(複数)選択行を
    > 新規行(終端行)に複写したいのですが…

    セレクターを指定しただけで判別する術がない物をじっと待っていても
    何も奇跡は起こらないと思います。
     例えばボタンの機能に絞り込み指定行もあるし、作業用のテキストを
    クリックしながら順番通りにコピーするなどの、自分が行動することに
    よって、結果はでる訳です。
     セレクターを指定して反転したからといって、どこまで指定したら
    選択したことになるのか、何秒か待てば自動で選択してくれるのかと
    いうことを考えた場合、ずっとPCの前に座っているわけではないので、
    途中で電話が入ったりした場合でも、頭の中ではココで選択してと思っ
    ても、そういった思いを行動にしないと今のパソコンに思っただけで
    カーソルやボタンが動作するのは望めないのじゃないでしょうか。

    頭の中の思いを実現できるイベントはないので、ボタンを作ったり
    テキストにクリックイベントを設定して、ココまでで複写して下さい
    というボタンを作り、複写するように作ったらよいと思います。

    私の場合は印刷が多いので、ボタンには分かり易いように
    1)指定行印刷 や 2)順番絞込 とか2)順番取消
    等のように作っています。

引用返信 [メール受信/OFF] 削除キー/
■4576 / inTopicNo.5)  Re[1]: フォームでの行複写
□投稿者/ kirikiri -(2009/04/06(Mon) 13:52:07)
    No4569に返信(通りすがりさんの記事)

    すでにお試しかもしれませんが、
    追加行コマンドのオプションで追加項目を指定できるので、
    それを利用できませんか?

    選択行の行番号なりIDを頼りに、或いは絞り込みで処理行を特定して追加ループみたいな感じではどうでしょうか?
引用返信 [メール受信/OFF] 削除キー/
■4578 / inTopicNo.6)  Re[1]: フォームでの行複写
□投稿者/ 通りすがり -(2009/04/06(Mon) 14:21:14)
    皆さん、どうも有難う

    ONnoji さん
    何か自分が気付ていない簡単な方法やコマンドがあるのでは? とかも考えましたが、
    > 未解決で終わっているようです。
    安直な方法は無い、という事が解かりました

    eo さん
    初めに思いついた方法です
    ONnoji さんのアドバイスで簡単には行かない事が解かりましたので、実際に試してみました
    普段行う10レコード程の複写で速度的にも全く問題なく使えそうです
    カウンタも計算項目も区別せず、丸ごと書出しで行けました
    ファイルに書き出さずにメモリ上で行えれば、より良いのですが、多重化で出来ないかなぁ

    今村 さん
    私が、質問する身でありながら、ポイントしか書かなかったので行き違いです、スミマセン

    kirikiri さん
    行追加でダミー行を追加して、行退避&行復旧 のループを試していました
    旨く行きましたが、他でも転用する時に、未定義禁止等で項目名に依存した記述になるメンドさがありました
解決済み!
引用返信 [メール受信/OFF] 削除キー/
■4579 / inTopicNo.7)  Re[2]: フォームでの行複写
□投稿者/ うにん -(2009/04/06(Mon) 14:43:05)
    > ファイルに書き出さずにメモリ上で行えれば、より良いのですが、多重化で出来ないかなぁ

    自分自身からは読み込みできませんね。
    昔から選択状態だと行複写できないのがなあ。

引用返信 [メール受信/OFF] 削除キー/
■4581 / inTopicNo.8)  Re[2]: フォームでの行複写
□投稿者/ 今村 誠 -(2009/04/06(Mon) 15:05:34)
    2009/04/06(Mon) 15:09:05 編集(投稿者)

    通りすがりさんこんにちは

    > ファイルに書き出さずにメモリ上で行えれば、より良いのですが、

    データ型に応じた件数分の配列変数を用意して、絞り込みまでは会話処理か
    ボタンの処理なので、ボタンに手続き実行でうまくいくのじゃないでしょう
    か。
    お手軽を使うのか作り込みを選択するかの違いと思います。

    > 多重化で出来ないかなぁ

    例えばタイマーイベントで
    proc フォーム::タイマー1()
     object @フォーム.タイマー1 = "0"
     &ImainNo = #IS表
     多重化
     &IsubNo = #IS表
    end
    としたフォームにボタン「上書き」を作り
    → 機能    機能パラメーター に
    1 表示    確定する
    2 上書き保存


    というボタンを作り1行削除してみます。
    タイマーイベントがonの場合上書きボタンはグレーで動作しません。
    タイマーイベントをoffにします。
    1行削除すると上書きボタンがグレーから押せるようになりました。
    共有状態と専有状態と同じ動作に見かけ上見えます。

    通りすがりさんのこの事例では多重化は必要でなく、単に絞り込んで
    データを取り出し、行追加時に読み込むとか項目値代入するとか
    色々方法は有るともいます。

     操作を取り消したいとき、専有状態か共有状態かが関係無いなら
    どの方法でもいいと思います。

    確認ですがこの掲示板でよく回答されている通りすがりさんですよね。


引用返信 [メール受信/OFF] 削除キー/
■4583 / inTopicNo.9)  Re[2]: フォームでの行複写
□投稿者/ ONnoji -(2009/04/06(Mon) 15:35:29)
    > 何か自分が気付ていない簡単な方法やコマンドがあるのでは? とかも考えましたが、
    >>未解決で終わっているようです。
    > 安直な方法は無い、という事が解かりました

    行セレクタを諦めて、明細行にチェックボックスを用意して、
    そのオン/オフの値をフラグにするといいのでは……、ないかと思ったりして。


引用返信 [メール受信/OFF] 削除キー/
■4587 / inTopicNo.10)  Re[1]: 行セレクタイベント
□投稿者/ 尾形 -(2009/04/06(Mon) 18:11:22)
    No4569に返信(通りすがりさんの記事)
    > 表形式フォームで、レコードセレクタでの(複数)選択行を新規行(終端行)に複写したいのですが…
    > 何か良い方法はありますでしょうか?
    > カウンタ項目や計算項目やグループ項目はナシでも…
    >
    > [カウンタ],[日時1]:未定義禁止,[文字列1],[文字列2],[数値1],[計算項目1]:[数値1]x2
    > 1,2009/04/06,あ,い,7,14
    > 2,2009/04/07,あ,う,6,12
    > 3,2009/04/07,え,う,2,4
引用返信 [メール受信/OFF] 削除キー/
■4588 / inTopicNo.11)  Re[2]: 行セレクタイベント
□投稿者/ 尾形 -(2009/04/06(Mon) 18:13:39)
    どうも、こんにちは
    上記は投稿ミスです

    行セレクタには、マウス系のイベントがあります
    これを駆使すれば可能かもしれません


引用返信 [メール受信/OFF] 削除キー/
■4591 / inTopicNo.12)  Re[1]: フォームでの行複写
□投稿者/ 通りすがり -(2009/04/06(Mon) 19:02:04)
    解決済みなので、御質問モードはオワタ

    書出し&読み込みの方法で、選択行1万レコード位までは速度気にならなかった
    全て選択も入れてのコマンドボタン押す毎にレコード数が倍々に増えて行って、増えーるワカメちゃん状態、何か非常にオモロイ
    1万レコード超えたら気持ち引っかかる感じ
    8万レコード超えたら遅い
    20万レコード超えたら亀さん出現
    4000万レコード超えは遅くてやってられないので試してない

    >うにん さん
    うん、読み込めない…
    Accessは行複写も出来るし、V2007になって罫線も簡単に引けるようになったし
    桐の方がメンドイと感じる今日この頃

    >今村 さん
    変数使ってのオンメモリ処理で、表の構造に依存しない汎用proc()記述するのは、死にそうにメンドそう
    proc内で項目名やデータ型調べないとならないし
    他でも転用するので勿論簡単な方が(^.^)

    >ONnoji さん
    Shiftキー使った複数行の選択時に、別の力業が必要に…

    >尾形 さん
    私の質問の書き方が悪かったんだけど、イベント駆動した後の処理、何かスマートな方法は…
引用返信 [メール受信/OFF] 削除キー/
■4593 / inTopicNo.13)  Re[2]: フォームでの行複写
□投稿者/ 今村 誠 -(2009/04/06(Mon) 21:23:43)
    2009/04/06(Mon) 22:10:57 編集(投稿者)
    2009/04/06(Mon) 21:33:00 編集(投稿者)

    通りすがりさんこんにちは
    > 1万レコード超えたら気持ち引っかかる感じ
    > 8万レコード超えたら遅い
    > 20万レコード超えたら亀さん出現
    > 4000万レコード超えは遅くてやってられないので試してない
    サンプル作ってやってみた状況が思い浮かびます。
    おそらく選択の部分で時間がかかったのではないですか。
    セレクタのクリックで例えば明細番号を拾ったとして、アクションを起こす前に
    今から複写するよというボタンを押し、
    選択が終わったら、複写してよというボタンを押せば、カウンタ項目の値を
    順番に検索し作業表に追加書き出して最後にジャンプ終端行から
    読み込ませるイベントはいかがでしょうか。

    サンプルを作ってみました。

    どの順番にクリックしてもいいし、shiftやctrlも有効ですが、書き出すことには
    全く関係ないので、自分的に選択した行を明示したいときは↑の操作をして下さい。
    エラー処理はしていないので、自己責任ということで。

    もう一つ追加で説明します。
    shiftを押しながらクリックすると連続で5行などが選択できますが、使っている
    イベントはクリックイベントなので黒く反転していてもクリックした行だけが
    書き出されます。
     また、同じ行を2回クリックすると本当は選択が解除されますが、そのようには
    作っていません。作れないことはないのですが、それは通りすがりさんが作り込んで
    下さい。

1239020623.lzh
/25KB
引用返信 [メール受信/OFF] 削除キー/
■4594 / inTopicNo.14)  Re[2]: フォームでの行複写
□投稿者/ ONnoji -(2009/04/06(Mon) 22:53:15)
    >>ONnoji さん
    >Shiftキー使った複数行の選択時に、別の力業が必要に…

    なるほど!、そこまでは考えておりませんでしたぁ〜。
引用返信 [メール受信/OFF] 削除キー/
■4596 / inTopicNo.15)  Re[3]: フォームでの行複写
□投稿者/ 通りすがり -(2009/04/06(Mon) 23:38:28)
    どうも有難う

    No.4571 eo さんの文意通りに、行セレクタで選択した後、ただ単純にコマンドボタン
     1.絞込み 指定行
     2.書き出し 表 <書き出し条件名:="temp"(全項目を単純にtemp.tblに書き出し,"上書き")>
     3.読み込み 表 <読み込み条件名:="temp"(全項目を単純にtemp.tblから読み込み)>
     4.解除 絞込み
    だけなんだけど、速度的にも問題ない感じ、simple is best
    どんどんレコード増えるのが面白いので続けたら、選択行が1万レコード超えた時点で半呼吸タイムラグ
    書き出しと読み込みに時間掛ってる、1万レコードのファイル読み書きするから当たり前だけど

    ファイル読み書き使わずに、メモリだけで出来たら良いな、と思うんだけど
    汎用的でスマートな方法が思いつかない…
引用返信 [メール受信/OFF] 削除キー/
■4597 / inTopicNo.16)  Re[3]: フォームでの行複写
□投稿者/ ONnoji -(2009/04/07(Tue) 09:45:05)
    > >>ONnoji さん
    > >Shiftキー使った複数行の選択時に、別の力業が必要に…
    > なるほど!、そこまでは考えておりませんでしたぁ〜。

    思い出しましたっ。

    拙作では、[Ctrl + クリック]または [Shift + クリック]でフラグをオンオフしておりますです。

    【引用】清書ユーティリティ 第2.1版 ヘルプ
    http://www.geocities.jp/siliconvalley_bay_7565/utx_list/utx_list2_help.htm#faq8

    8.複数行のデータをクリップボードへコピーできますか?
    ・清書ユーティリティの行を [Ctrl + クリック]または [Shift + クリック] すると行の色が紺色に変わります。
    ・この状態で清書ユーティリティ本体の ボタンをクリックすると紺色の行のデータがクリップボードへコピーされます。
     コピーが終了すると紺色のデータ行の色は元に戻ります。
    ・クリップボードへコピーしたデータはイベント編集・一括編集で貼りつけることができます。
     桐のサービスパック SP5 または SP6 の[クリップボード]コマンドを利用するため、SP5 / SP6 より前の桐V8ではクリップボードへコピーできません。
    ・一度にクリップボードへコピーできる文字数は最大4000文字までです。
     一度に全部の行をコピーできない場合は、コピー終了後に残りの紺色の行の先頭へ自動的にジャンプします。
    ・紺色になった行を解除するには [Ctrl + クリック]または [Ctrl + Shift + クリック] します。
     [Shift + クリック]/[Ctrl + Shift + クリック]は通常のWindows操作と異なる動作をします。ご了承下さい。



引用返信 [メール受信/OFF] 削除キー/
■4598 / inTopicNo.17)  Re[4]: フォームでの行複写
□投稿者/ うにん -(2009/04/07(Tue) 09:58:39)
    あっ!コピペでいいじゃん。

    > 8.複数行のデータをクリップボードへコピーできますか?
    > ・一度にクリップボードへコピーできる文字数は最大4000文字までです。

    フォームで絞り込み・選択行したら表に切り替えて全行コピー・終端行でペースト。
    何行コピーできるかは試してませんが、単なるコピペで桐の中じゃないから
    4000文字ってことはないでしょう。
    これができるから絞り込み状態での行複写が実装されてないのかな?

引用返信 [メール受信/OFF] 削除キー/
■4599 / inTopicNo.18)  Re[5]: フォームでの行複写
□投稿者/ hidetake -(2009/04/07(Tue) 11:04:14)
    > あっ!コピペでいいじゃん。

    オンメモリとなると、桐の場合、変数経由ややクリップボード
    コマンドは、どうしても文字数に制限があるので、容量の問題
    で汎用的には難しい。
    なので、うにんさんも書いたコピペを使用する Sendkeys を
    利用した VBScript を書いてみたけど、少ない行数ではいいけ
    ど、選択行数が多いとコピーする時間や貼り付ける時間が長く
    なるのでそれを待つタイミングが難しい。待ちすぎると少ない
    行数の時美しくないし・・・

    と言うことで、書き出し読み込みがシンプルで間違いも無いと
    思います。

引用返信 [メール受信/OFF] 削除キー/
■4600 / inTopicNo.19)  やっとデケタ お世話になりました<m(__)m>
□投稿者/ 通りすがり -(2009/04/07(Tue) 12:32:44)
    2009/04/07(Tue) 16:45:03 編集(投稿者)

    なんだよ、フォームの行追加と一括の行追加は違うじゃん
    行追加のパラメータは無し で動く、もう恥し
    ------------
    行セレクタで任意に選択

    コマンドボタン
    1.絞込み 指定行
    2.手続き実行 <全行複写>
    3.絞込み 解除

    proc 全行複写()
     for &秒=1,&選択件数
      ジャンプ 行番号=&秒
      行退避
      行追加 /* 未定義禁止項目があれば何か項目値を入れる */
      ジャンプ 行番号=B
      行復旧
     end
    end
引用返信 [メール受信/OFF] 削除キー/
■4601 / inTopicNo.20)  Re[2]: やっとデケタ お世話になりました<m(__)m>
□投稿者/ hidetake -(2009/04/07(Tue) 12:47:26)
    > 行復旧

    Windows版の桐では、数値項目で「#未定義」のデータを
    「行復旧」させると、「#未定義」ではなく「0」になり
    ます。DOS版では「#未定義」のままでした。バグです。

    「#未定義」と「0」を区別する必要のあるシステムでは
    注意が必要です。


引用返信 [メール受信/OFF] 削除キー/

次の20件>

トピック内ページ移動 / << 0 | 1 >>

[このトピックに返信]
Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -