過去の桐井戸端BBS (桐ver.8) |
6564 | フォームでの入力作業のスピードについて | ぺて | 2000/06/22-10:36 |
いつも参考にさせてもらっています。 テスト処理において、点数の入力作業がおそくて困っています。 3桁の生徒番号を入力して生徒を検索し、1〜5科目の点数を入力するのですが、 こちらの入力スピードに桐が全くついてきてくれません。 検索の時間は待つとしても、連続して次々と得点を入力していくとができません。 キーバッファでもついていれば・・・と思ってしまいます。 変数に代入して一気に行訂正をしようとも思ったのですが、 フォームを使って複数の変数に値を代入させようとしても フォーカスが自動で移ってくれず、うまくいきません。 なにかいい方法がないでしょうか。 | |||
6565 | Re:入力作業のスピードについて | 宮城 | 2000/06/22-11:49 |
記事番号6564へのコメント ぺてさん、こんにちは。 あの、申し訳ないんですけど、最低限ほかの人が再現してみることができる前提条件は提示していただけないと、 「なるほど遅いね」とか「こうしたら速くなったよ」というようなことは一切議論できないんです。 本件はそういう説明が難しいというのは理解できます。でも・・・。 >3桁の生徒番号を入力して生徒を検索し 表引きのことかなと想像はできますが、具体的にどんな設定をしているのですか? >連続して次々と得点を入力していく(こ)とができません。 表操作の話ですか、一括処理ですか、はたまたKEVですか? 一括処理ならどんな記述ですか? そもそもバージョンは何ですか? べてさんがお困りの状況は、BBSをみている人にとっては べてさんが書き込みで説明していただかない限りけっしてわかりません。 このままではリプライつかない可能性大です。 | |||
6566 | Re:入力作業のスピードについて | 関口喜人 | 2000/06/22-22:27 |
記事番号6564へのコメント 書き込まれた情報を元に、憶測で意見を書き込みます(はずしていたらすいません) >テスト処理において、点数の入力作業がおそくて困っています。 >3桁の生徒番号を入力して生徒を検索し、1〜5科目の点数を >入力するのですが、こちらの入力スピードに桐が全くついてき >てくれません。検索の時間は待つとしても、連続して次々と得 >点を入力していくとができません。キーバッファでもついてい >れば・・・と思ってしまいます。 表の作り方に問題があるように思えます。 生徒名簿の後方にどんどん項目を足して、1つの表で管理しているのではないでしょうか? 自分なら、次のように造ると思います。 基本的には、販売管理と同じように考えたら、いかがでしょうか? 2つの表で管理します。 生徒名簿台帳(顧客マスターとおなじにかんがえてください。) テスト点数管理台帳(売上台帳といっしょと考えてください。) 生徒名簿台帳について 生徒番号は、3桁で考えられているということで、人数は1000以下と考えます。 百の位がクラスをあらわし、十と一の位が、生徒の出席番号でしょうか? テスト点数管理台帳について いろいろ項目はあると思いますが 1、テストの名称 2、年月日 3 教科科目 をグループ項目とした入力フォームを作ると便利ではないでしょうか。 あとは、生徒番号を設定し、氏名など必要な項目は、項目計算式で表引きし、 あとは点数を入力していけばいいのではないでしょうか? ちょっとはずしていますかね? | |||
6567 | どうして検索する?? | 関口喜人 | 2000/06/22-22:28 |
記事番号6566へのコメント それよりも、気になることがあります >生徒番号で生徒を検索するのに時間がかかる ということですが、これは、テスト用紙をクラスごと、出席番号順に並べておいて、 表をそれと同じ順にソートして、上から連続して入力していけば、検索の必要はないのでは。 | |||
6572 | Re:入力作業のスピードについて | ぺて | 2000/06/23-05:44 |
記事番号6564へのコメント 要を得ない発言で申し訳ありませんでした。 具体的には以下のとおりです。一括処理についての質問です。 表に、生徒番号と5科目の得点を入力する項目があります。 (もっと多くの項目がありますが、とりあえず、 その得点を行訂正で値を代入したいと思っています。) 学年やクラスその他はグループ分けされています。 ただ、検索の時間は目をつぶることとします。 生徒番号を”機能キー”で入力してレコードを検索しています。 桐 ver5 で作ったものを windows用に作り変えているところで、 本当は 機能キー入力のダイアログが出てくるのはうっとおしいのですが うまくフォームを使いこなせません。 手元の入力データが上から順に並んではおらず、 後でばらばらに入力することもあるため、 入力すべきレコードを検索してから入力します。 科目数は動的に変化させたいので、1〜5科目まで入力する科目、 および科目数は変化します。つまり、1〜4科目を連続して 入力することもあれば、5科目すべて入力することもあります。 また3科目目だけを入力することもあります。そのときに応じて変わります。 表形式での編集が早いのはわかりますが、効率的な入力を思いつきません。 現在、帳票で行訂正のコマンドをつかっているのですが、 これは以上の条件を満たす処理はできますが、 画面で入力データの落ちがないことを確認しなければならず、とても効率が悪いです。 フォーム上で、複数の変数に数値を代入することができれば (テンキーとエンターのみで) レコードごとの行訂正の速度は目をつぶるのですが なかなかうまくいきません。 大量の数値データを特定の項目に一気に入力するためのコツがあれば と思って質問させていただきました。 グラフィックカードの性能でも大きくかわるようですが、 キーで入力したデータが項目値としてきちんと代入されれば それでいいのです。 これでも、抽象的な質問ですね。申し訳ありません。 DOS の頃の入力速度を求めるほうがおかしいのかもしれません。 混乱させて申し訳ありませんでした。 | |||
6573 | Re:入力作業のスピードについて | 野良犬 | 2000/06/23-09:18 |
記事番号6572へのコメント >表に、生徒番号と5科目の得点を入力する項目があります。 >(もっと多くの項目がありますが、とりあえず、その得点を >行訂正で値を代入したいと思っています。) 表についてはいくつの表を使用しているのかで変わってきますが、 とりあえず、生徒番号に索引を付けてみてください。 生徒番号がユニークであることが保証されるなら(ふつうはそうなるように 番号をつけますが)重複禁止索引にすると効果は大です。 当方も、生徒に関するデーターを扱っていますが、 表のレコード数が数万件程度なら、全く問題なく入力できてます。 | |||
6574 | Re:入力作業のスピードについて | 宮城 | 2000/06/23-11:17 |
記事番号6572へのコメント ぺてさん、どうもです。 この手のはなし、説明が難しいのは承知しております。 実物みせてもらうのが一番ですけど、それじゃBBSに投稿する意味がない。(^^;; で、変だなと思われる点は・・・。 >科目数は動的に変化させたいので、1〜5科目まで入力する科目、 >および科目数は変化します。つまり、1〜4科目を連続して入力 >することもあれば、5科目すべて入力することもあります。 ということは、都度、表作り直しですね。素直に考えれば、 生徒番号 生徒に関する諸データいろいろ 科目1名 科目1点数 科目2名 科目2点数 科目3名 科目3点数 科目4名 科目4点数 科目5名 科目5点数 集計・解析項目いろいろ 別に生徒マスターと今回科目名とかいう表を作っておき そこから表引きすれば、入力項目は生徒番号と点数だけでいいはず。 これで、野良犬さんが言われるように生徒番号で索引がついていれば、 いきなり行追加、行訂正生徒番号いいはずだし、一瞬で「生徒に関する 諸データいろいろ」は引けるはず。なんで機能キー? それから、点数の行訂正時、 >連続して次々と得点を入力していくとができません。 これは、パソコンのスペックに問題があるか、集計・解析項目いろいろが重すぎるのじゃないか (でも少々のことなら平気のはずなんですが)と思います。 項目計算式を外してしまって点数入力後、置換で一気に行うか、 特定変数により項目計算するかどうか判定させれば、飛躍的に改善されると思います。 &計算フラグ するorヌル #条件選択(&計算フラグ="する",**既存計算式**,1,"") | |||
6575 | Re:入力作業のスピードについて | 悲しげ | 2000/06/23-12:27 |
記事番号6572へのコメント どもっ、ぺてさん 全体像がいまいち判りませんが、 そのような処理でどうしてそんなに遅くなるのかが不思議です。 もしかして、スプレッドシートのように、全ての項目を持たせた表を使って (これはこれで有り得ると思います)、入力時にはその表の中で 生徒をいちいち検索しながら作業していると云うことなのでしょうか? とすれば、私なら、データ保存用の表と入力作業用の表を分けると思います。 作業表は、最初は空にしておくのですが、入力完了後にデータを保存表に 読み込みor追加書き出し、もしくは生徒番号を照合項目として併合(両方)する。 こうすると入力作業は一挙にドドドドッとやれます。 結合も使えるかもしれませんが、これは私は苦手でよく判りません。(^^;) あと、「機能キー」コマンドと仰っていますが、これは「キー入力」コマンドの誤記ですよね? 「生徒マスター」等を別表(索引付き)として用意すべきとの宮城さんのご意見にも1票。 | |||
6597 | Re:入力作業のスピードについて | natsu | 2000/06/24-01:15 |
記事番号6572へのコメント >現在、帳票で行訂正のコマンドをつかっているのですが、 ここのところがよく分かりません >変数に代入して一気に行訂正をしようとも思ったのですが、 >フォームを使って複数の変数に値を代入させようとしても >フォーカスが自動で移ってくれず、うまくいきません。 何となく気持ちとしては理解できますが 処理の王道は、みなさんがコメントされている通りだと思います 現行の方法?を続けるのであれば 1.キー入力で出席番号を入力 2.検索 比較式で対象レコードへ移動(ここまでは一緒) 3.キー入力で点数を入力する (科目A、科目B・・・を連続して入力 つまり国語95点 数学83点 英語87点なら 095083087) 4.行訂正 [科目A]=#sstr(&点数,1,3),[科目B]=#sstr(&点数,4,3),[科目 C]=#sstr(&点数,7,3) (データ型に注意してください これだと点数は文字列です) 外していなければ、ちょっとはスピードアップするかもしれません 点数のキー入力のあとに、入力チェック用のフォームを開けばよいでしょう さて、べてさんも言われている >フォーム上で、複数の変数に数値を代入することができれば >(テンキーとエンターのみで) これは、私も同感です MS−Accessの非連結オブジェクトが桐でも使えれば 何の苦労もないのにと思う方、いらっしゃいませんか ちなみに、一括処理なしでのフォーム上でのデータ絞り込み方法については 過去ログ786番をご参照ください | |||
6599 | Re:入力作業のスピードについて | ぺて | 2000/06/24-04:06 |
記事番号6572へのコメント 非常に抽象的な質問に対して、さまざまな回答をいただき どうもありがとうございます。 こちらの表は、 生徒台帳 科目名やテスト全体に対するデータをもつ表 テストの得点(個人データ) の構成で、処理しています。 出力の際には結合を多用しますが、主キーを使った結合ファイルでの作業は とても制限が多く(というか、使いこなせず) 生徒番号と得点以外の情報も含んだ、入力用のファイルが存在します。 しかし、問題は、そのファイルに対して、悲しげさんがご指摘の通り >もしかして、スプレッドシートのように、全ての項目を持た >せた表を使って(これはこれで有り得ると思います)、入力 >時にはその表の中で生徒をいちいち検索しながら作業してい >ると云うことなのでしょうか? まさに、それに近いものがあります。 ただ、宮城さんや悲しげさんのご指摘のとおり さらに一時的に(入力作業時だけの)得点入力用ファイルを その都度つくり、それに対して入力するのもいい案だと思いました。 また、natsu さんの入力方法は、非常に有効であると感じると同時に、 独学の私としては、そのような「王道」の方法を広く知る機会が 欲しいとも感じました。ただ、初めての人間でも間違えずに入力できる 方法ではないので、少し踏襲してしまいます。 例えば、項目が10個(A〜J)あるような表で、入力すべきレコードを 検索しつつ、E,F,G,H,I の項目をテンキーとエンターだけで どんどん値を入力したいのです。ただし、Eの項目だけ入力したり F〜Hの項目だけ入力したりしたいわけです。 その都度、入力項目に応じた一時的な表をつくるのも natsu さんの言われるような入力方法をとるのもどちらも効果的だと思いました。 みなさんは、どのような方法をとっておられるかと疑問になっていたもので、 抽象的な質問で申し訳ありませんでした。 /* 機能キーは、キー入力 の間違いでした、ごめんなさい */ | |||
6602 | Re:入力作業のスピードについて | 悲しげ | 2000/06/24-10:43 |
記事番号6599へのコメント どもっ、ぺてさん >さらに一時的に(入力作業時だけの)得点入力用ファイルを >その都度つくり、それに対して入力するのもいい案だと思いました。 おそらくは誤解していないとは思いますが、念のため付記しますと、 「その都度つくり」と云うのは、表をその都度「新設」する訳では ありませんので・・・(^^;)。 入力作業表を常態として用意しておき、その都度中味を空にしてから、 今回のデータを入力します。入力完了後には今回データを保存記録表に 「日次更新」的に「転記」すると云うものです。 一般的な売上入力とかでは、普通はこのような方法を取っているものが多いだろうと思います。 この方が何かと便利だからでしょうね。 と云うことで、一般的な例をひとつ挙げてみます。 例えば、「メインメニュー」に「新規入力」とか「データ転記(あるいは日次更新)」とか設けておいて、 それらを選ぶ形で各種処理に入ります。 入力項目に定型的なパターンがあるのなら、例えばe・f項目だけのフォームとか、 g・h・i・kだけのフォームとか幾つか用意して、下位メニューから選べるようにするとか。 生徒を検索するに際しては、例えばcode(生徒番号でしたっけ)の先頭一致とか、 氏名ヨミの先頭一致または部分一致(この場合は検索ではなく選択とする)を入力する。 検索文字列の受けかたは「キー入力」コマンドでもいいし、 入力作業表(フォーム)に項目をひとつ置いといてその値でもって判断する方法もあるし。 要はその値を使って、生徒マスターから該当を検索取得することになります。 検索方法は、変数に検索文字列を取得してから編集表を生徒マスター表に移して 処理行を指定する方法とか、簡単には表定義から表引き条件を設定する方法等もあります。 いずれにせよ、マスター表に索引を設定して利用できるようにしてあれば 瞬時に検索可能だと思います(部分一致絞り込み時を除いて)。 | |||
6619 | Re:入力作業のスピードについて | 佐田 守弘 | 2000/06/25-14:09 |
記事番号6564へのコメント ぺてさん 質問と皆さんのコメントを拝見しました。 実の所、私にもまだ状況が理解できておりません。 ですが、どうも質問されているぺてさんと、回答されている方々のイメージがずれているような気がします。 そこでまず確認なのですが、 @V5の一括処理をそのまま一括処理ウィンドウで実行しているのでしょうか。 A使っているマシンは何ですか。 ●Windows版は遅いというけど MS-DOS版に比べてWindows版が遅いのは致し方ありませんが、それなりの環境で使えば、 苦になる速度低下にはならないと思います。 >ただ、検索の時間は目をつぶることとします。 >レコードごとの行訂正の速度は目をつぶるのですが 「瞬き」ぐらいの時間だけ目をつむるのは止むを得ませんが、それ以上目をつむる必要があるなら、 動作環境とシステムの見直しをすべきでしょう。 学校の成績との事なので、データ件数もそれ程多くはないと思います。 MMX Pentiumクラス以上のマシンでメモリもある程度搭載し、適切にシステムを組めば、 かなり快適に動くはずです。 アルゴリズムが適切でない、索引が適切でないなどの原因がありそうですが、 今まで論じられている状況からはちょっと考えられないような気がします。 佐田守弘(KS-00119) | |||
6629 | Re:入力作業のスピードについて | natsu | 2000/06/26-19:07 |
記事番号6599へのコメント べてさんへ >独学の私としては、そのような「王道」の方法を広く知る機会が 欲しいとも感じました。 私もV3からの独学派です ここ数年は、職場のシステム(VB+アクセス)を構築している会社の方々と話し合う機会も多くなり、 それなりにプロの技を見せていただいております (王道は横から眺めているという感じです) 佐田先生のこちらのページで、正規化から始めてはいかがでしょうか http://www.ne.jp/asahi/m.sada/kiri/KIRI5/NORML1.html | |||
6631 | Re:入力作業のスピードについて | 今村 誠 | 2000/06/27-04:15 |
記事番号6599へのコメント >まさに、それに近いものがあります。 >例えば、項目が10個(A〜J)あるような表で、入力すべきレコードを >検索しつつ、E,F,G,H,I の項目をテンキーとエンターだけで >どんどん値を入力したいのです。ただし、Eの項目だけ入力したり >F〜Hの項目だけ入力したりしたいわけです。 電話番号簿で作ってみました。 レコード件数は3300件です。ヤマトの着店コード文字列半角英数を検索して 郵便番号(数値)電話番号(文字)ともに訂正できます。 検索0.2秒未満一覧表フォームで作ります。 新規作成なら一番右上のサンプルがよいのでは。 コマンドボタンを項目の上のヘッダ部分に8個並べます ボタンの名前が大事です 1個目を作ったら複製(右クリック)が簡単です。 F2F3F5F6F7F8を国語算数理科社会に割り当てできます。 オブジェクト名bF02 最初のbは小文字でつぎのFは大文字です。 機能名 機能パラメーターリスト/* このボタンを7回コピーすればよい*/ 1 表示 オブジェクト名 bF04 2 手続き実行 ”生徒番号検索” 機能名 機能パラメータリスト 3 実行条件 #EOF<>1 1表示 4 訂正 ”t国語”/* ここをボタン毎に変えますテキストのオブジェクト名*/ オブジェクト名 bF09 ヘッダに作る検索用テキストボックス 機能名 機能パラメーターリスト オブジェクト名 a生徒番号 1 表示 確定する ソース &STR 2 なし #計算(#代入(&STR,"")) 編集タグの入力モード 3 訂正 ”a生徒番号” 漢字変換OFF フォームのオブジェクトの属性のイベントタブのキーダウンをチェックWクリック 手続き定義開始 フォーム::キーダウン(自動的に作られる決まり文句です) if ( &仮想キーコード ≧ 113 .and &仮想キーコード ≦ 120 ) メソッド呼び出し @フォーム.キー変換( 7 ) &仮想キーコード = &仮想キーコード - 111 &オブジェクト名 = "bF" + #str( &仮想キーコード, 2 ) メソッド呼び出し &オブジェクト名.実行() &処理中止 = 1 else メソッド呼び出し @フォーム.キー変換( 0 ) &処理中止 = 0 end 手続き定義終了 手続き定義開始 a生徒番号::マウスインアウト(長整数 &フラグ,長整数 &明細番号) if ( &フラグ = 1 ) オブジェクト操作 @フォーム.フォーム表題 = \ "F9で生徒番号を入力後F2を押すと検索した後国語の訂正モードに入ります。" else オブジェクト操作 @フォーム.フォーム表題 = \ "訂正が終わったらまたF9を押すと確定後次を捜します。" end 手続き定義終了 手続き定義開始 生徒番号検索 () 代入 &検索1="生徒番号" /* 項目名です*/ 条件 (.not #eof) 行マーク定義 2 /*検索に 失敗したらここに戻る*/ 検索 &検索1_&STR,文字比較方法=自動,部分一致検索=先頭一致 条件 (#eof) 確認 "該当するデータはありません。" 条件 (#eof) &検索1="なかったね" 条件 (&検索1="なかったね") ジャンプ 行マーク=2 行マーク解除 2 代入 &検索1="",&STR="" 手続き定義終了 変数を2個使ったのでメインの下に下記のように記述します。 メイン 変数宣言 局所,文字列{&検索1,&オブジェクト名} * 詳しいことは聞かないでください。よくミスします。わかる範囲で------------ 悲しげ先生の後で気が引けるのですが見通しの良さでは一覧表からの訂正では と思ってつくってみました。 |