過去の桐井戸端BBS (桐ver.9)
19751 IDという1からの連番項目を自動的に入力させたい ひまわり 2003/04/05-17:53
桐9を使って名簿を管理しようと思ってます。
名簿の表にはIDという1から連番の項目があるのですが、(カウンタ型ではないです)
例えば名簿入力のフォームで新規登録ボタンを設けてそのボタンを押した時、
IDの項目に最終番号+1を自動的に入力させたいのですがなにかよい方法はありますでしょうか?

よろしくお願いします。

19752 Re:番号自動入力 うらしまたろう 2003/04/05-18:01
記事番号19751へのコメント
ひまわりさんは はじめまして
カウンタ型ではだめですか

19753 Re:番号自動入力 しぼうかん 2003/04/05-18:50
記事番号19751へのコメント
ひまわりさん、こんばんは。

ハズしているかもしれませんが、

新規登録ボタンの機能名には行挿入を設定しておいて
フォームの行挿入開始イベントにチェックした後にイベントファイルに下記の様に記述して見て下さい。

手続き定義開始 フォーム::行挿入開始(長整数 &明細番号)
編集表 &多重化フォーム */名簿入力フォームを多重化したサブフォーム/
項目集計 [ID番号]
編集表 &名簿入力フォーム
項目値代入 [ID番号]=&最大値+1
手続き定義終了

19754 補足説明です。 しぼうかん 2003/04/05-19:03
記事番号19753へのコメント
名簿入力フォームと多重化したサブフォームでそれぞれ表番号を所得しておく必要が有るので
イベントファイルには下記のようなフォーム開始イベントの記述が必要です。
"&名簿入力フォーム"と"&多重化フォーム"の変数は宣言済みとします。

名簿入力フォーム用のイベントファイル

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
&名簿入力フォーム = &表番号
手続き定義終了


多重化フォーム用イベントファイル

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
&多重化フォーム = &表番号
手続き定義終了


19755 Re:番号自動入力 悲しげ 2003/04/05-19:20
記事番号19753へのコメント
う〜ん、私は多重化表を使う必要はない(自表だけで済む)ような気がします。
19756 Re:番号自動入力 うにん 2003/04/05-21:00
記事番号19755へのコメント
悲しげさん
>う〜ん、私は多重化表を使う必要はない(自表だけで済む)ような
>気がします。

自表が選択状態だった場合を考えると、多重化した方が楽でしょう。
多重化するのにサブフォームはいらないと思いましたが?

19757 Re:番号自動入力 うにん 2003/04/05-21:22
記事番号19756へのコメント
>自表が選択状態だった場合を考えると、多重化した方が楽でしょう。

選択状態だと、多重化した側で追加した行は元の方では見えませんでした。
(当たり前か...)追加した行の行訂正に入りたいだろうからこれは...
多重化って結構ややこしい。

IDには、重複禁止の索引があるはずなので、項目集計よりも
並べ替え 索引名 = IDの索引
ジャンプ 行番号=最終行
行追加 [ID]=[ID]+1
なんて方が速いかも?

19758 Re:番号自動入力 宮城 2003/04/05-21:36
記事番号19755へのコメント
皆さん、こんばんは。

私だったらお手軽に、その項目の挿入初期値式に

#直前値([],0)+1

とするところですね。後の味付けは気の向くまま。

# 我ながら古いヤツだなぁ。(^^;;
19763 Re:番号自動入力 悲しげ 2003/04/06-01:14
記事番号19757へのコメント
どもっ、うにんさん

>IDには、重複禁止の索引があるはずなので、項目集計よりも
>並べ替え 索引名 = IDの索引
>ジャンプ 行番号=最終行
>行追加 [ID]=[ID]+1
>なんて方が速いかも?

そうですね、私はこっちの方が好きです。
あと、てっきり新規ID該当だと思っていたら、実は既存だった……
なんてことにならないように、つまりは既存の有無をチェックして
同一人に複数のIDを与えないようにする処理も実は必要でして、これは意外と厄介です。
19766 Re:番号自動入力 ひまわり 2003/04/06-15:23
記事番号19758へのコメント
こんにちは。
みなさんお答えいただきありがとうございました。
桐を使い始めたのは最近で、イベント処理での方法はうまく出来ませんでしたので
宮城さんの方法を使わせて頂くことになりました。

ところでイベント処理での方法を試していたとき
メインフォームのオブジェクト名が変更できず苦労しました。
サブフォームは簡単に変えられたのですが...
まだまだ勉強不足です。
これからもどうかよろしくお願いします。

19767 Re:番号自動入力 しぼうかん 2003/04/06-16:37
記事番号19766へのコメント
ひまわりさん、こんにちは。

またハズしているかもしれませんが(^^;)

サブフォームはメインフォーム上にある時はメインフォームのオブジェクトの一つなのでオブジェクト名を設定できますが、
メインフォームは出来ません。

敢えて言うならメインフォームのファイル名がそれに当たるのかもしれません。
19768 「ところで…」は御法度ですが 悲しげ 2003/04/06-16:48
記事番号19766へのコメント
どもっ、ひまわりさん

>ところでイベント処理での方法を試していたとき
>メインフォームのオブジェクト名が変更できず苦労しま
>した。サブフォームは簡単に変えられたのですが...

あるひとつの案件が片付いた、その同じコメント内に「ところで…」と
別な質問をするの云うのは、実はここでは御法度なんですよね。(^^;)
気持ちは判りますが、別質問は別なツリーを起こすべきです。

とは云いつつ、コメントしてしまいますが(^^;)(^^;)
類似の現象は私もしばしば経験しています。
で、原因不明ながら、云われてみれば確かにメイン&サブフォームのメインフォーム(の再定義)においてでした。
変更できなかったのは、オブジェクト名だけではなく、他の属性もできなかったと記憶しています。
何だか、入力用ボックス内の値がチラチラ揺れているような感じで変更不能でした。
この時、当該のサブフォームがどうだったかは未確認ですが、
少なくとも関係ないフォームは変更可能でした。
で、そのような症状は、しばしば桐を再起動しても直らなかったことが多かったと記憶しています。
逆に、そのような症状が出ない(メインフォームを楽々修正できた)こともあるのですが。
で、そうなった時に私はどうしたかと云うと、私は当該フォームを使うに際して変数(特に共通変数)を沢山宣言しているので、
当該変数を宣言しない形で桐を起動させるようにしました。
こうすると、不思議なことに(一部に未定義変数エラーは出ますが)当該フォームが修正可能となるのです。
このことは経験的に発見しました。
一時はフォームが壊れたのかと落胆しましたが、どうもそうではないようで、
叙述した事情は(対策含めて)しばしば再現しております。

と云う訳で、話をまとめますと
1)ひまわりさんも桐を再起動させて試してみてはいかがでしょう?
  (変数宣言がらみならフォーム再定義に際しては未宣言状態で)
2)とは云え、私のこの現象って何なんでしょうね?
  他の方でこのような症状が出たと云う話は寡聞です。
  情報持っている方いらっしゃいませんか?


19771 Re:番号自動入力 ひまわり 2003/04/07-00:58
記事番号19767へのコメント
しぼうかんさん、こんにちは。

>敢えて言うならメインフォームのファイル名がそれに当たるのかもしれませ
>ん。

ありがとうございます。
そういう事だったのですか!疑問が1つ解決しました。

また、悲しげさんもアドバイスありがとうございます&
すみませんでした。
もっとしっかりと規約を読むべきでした。
まだまだわからないことだらけですが、桐を勉強しながら
考えている機能を実現していきたいと思います。

お答えいただいた皆さん本当にありがとうございました。

19779 Re:もうひとつ「ところで」 悲しげ 2003/04/07-19:10
記事番号19771へのコメント
どもっ、ひまわりさん、しぼうかんさん、
今回は完全に外したようで、しぼうかんさんのが当たりだったようですね。
ところで

#19766
>ところでイベント処理での方法を試していたとき
>メインフォームのオブジェクト名が変更できず苦労しました。
>サブフォームは簡単に変えられたのですが...

#19767
>サブフォームはメインフォーム上にある時はメインフォームのオブジェクトの
>一つなのでオブジェクト名を設定できますが、メインフォームは出来ません。
>敢えて言うならメインフォームのファイル名がそれに当たるのかもしれません。

お二人のこのやりとりの意味が、実は全然わからないのですが。(?_?)

19781 下手な鉄砲も・・・ しぼうかん 2003/04/07-22:36
記事番号19779へのコメント
悲しげさん、こんばんは。

小学生がサイコロを転がしてマグレで当たった答えを大学生に解説するようで恐縮ですが、
ひまわりさんがおっしゃっているオブジェクト名とはメイン&サブフォームのサブフォーム上で
右クリックしてオブジェクトの属性を選び、サブフォームのタブを
選んだ時に出てくる"オブジェクト名(N)"の事だと思います。

19785 フォーム自体のオブジェクト名? 悲しげ 2003/04/08-13:27
記事番号19781へのコメント
どもっ、しぼうかんさん
#19781の記述は、要するに(メイン&サブフォーム上でメインフォーム内の)
サブフォームのオブジェクト名を変えるやり方ですよね。
私の疑問は、サブの方ではなく「メインフォームのオブジェクト名」と云うことについてだったのです。
ですから、#19766でひまわりさんが

>メインフォームのオブジェクト名が変更できず苦労しました。

と仰っていることがそもそも何をやろうとしていたのか(何のために「メインフォームのオブジェクト名を変更」しなければならないのか)、
あるいは「苦労した」と云う過去形で語っていることからは解決済み(変更できた?)
であるとも取れる訳で・・・・、この辺りが判らなかったと云うことです。

推測するに「サブフォームのオブジェクト名を変更できるように、
メインフォームのオブジェクト名も変更してみたかった」と云うことなのでしょうか?
とすれば、メインフォームに限らず(サブフォームオブジェクト以外に)
そもそもフォームそのものにオブジェクト名と云うのは存在しないから、
変更も不能です(フォーム内に存在する各オブジェクトにはそれぞれ名があって、
その名を変更できるものもできないもある)。
それはそうなんですが、では何故「フォームのオブジェクト名」変更しようとして
「苦労」したのかが不思議なのです。
「変更」する必要があったからだと思う(必要がないのにナントナク変更しようとして「苦労」するとも思えない)のですが? >ひまわりさん

ps:
ひょっとして「フォームのオブジェクト名」と云うのは、フォームのタイトルバーに表示される文言のことでしょうか?
とすれば、それはフォームの属性は「オプション」タブで設定します。
(オプションタブが表示されなければ、「詳細プロパティ」なるキーワードで過去ログ検索のこと)

19794 おもいっきり空振り しぼうかん 2003/04/08-20:46
記事番号19785へのコメント
どうも悲しげさん。


>推測するに「サブフォームのオブジェクト名を変更できるように、メインフ
>ォームのオブジェクト名も変更してみたかった」と云うことなのでしょうか?


私はこういう事だと思ってコメントしました。


>では何故「フォームのオブジェクト名」変更しようとして「苦労」したのかが
不思議なのです。


うーん、そこまで踏み込んでは考えませんでした。
やっぱりひまわりさんじゃないとわからないですね。
どうも、釈迦に説法でした。(^^;)

19851 Re:フォーム自体のオブジェクト名? ひまわり 2003/04/10-23:08
記事番号19785へのコメント
悲しげさん、しぼうかんさんこんにちはひまわりです。
お返事遅くなってすみません。

>それはそうなんですが、では何故「フォームのオブジェクト名」変更しよう
>として「苦労」したのかが不思議なのです。「変更」する必要があったから
>だと思う(必要がないのにナントナク変更しようとして「苦労」するとも思
>えない)のですが? >ひまわりさん

すみません。説明不足でした;;
実は以前サブフォームの切り替えを行いたくて過去ログ2315のツリーで
紹介されていましたイベントを使う方法を試してみたことがあるんです。

そのツリーの2323でオブジェクト名を変数に代入する方法が書かれていたのですが、
その際メインのフォームの名前(オブジェクト名)が変えられずに
イベント処理もうまく機能せず(よくわからなくて)一体どうすればいいんだろう???って
悩んでしまったことがあるんです。

結局フォームの切り替え自体はその後あれこれ試しているうちになんとか
うまくいったのですがその時の事がずっと記憶に残ったままなのでした。
正直言うと今でもよくわかっていなかったりするのですが^^;

仕事でパソコンはずっと使っているのですがDBソフトを扱うのは初めてで(画像系メインです)
本当にわからないことだらけなのでヘルプを見ながら少しずつ進歩できていけたら...と思っています。

色々お答えいただいて本当にありがとうございました。
19854 Re:フォーム自体のオブジェクト名? 悲しげ 2003/04/10-23:37
記事番号19851へのコメント
どもっ、ひまわりさん、お呼び立てしてしまいまして。(^^;)

でも、説明していただきましたが、結局はその趣旨を読み取ることはできませんでした。<(_ _)>

戻る