ACCESSのオートナンバーを使用したいのですが、
4バイト(Long)で表現できる数値を越えた時どうなるのかが心配です。
自動的に0に戻るのでしょうか?それともエラーが発生してしまうのでしょうか?やはり、意図的にオートナンバーを初期化するべきなのでしょうか?
とても大きな数値になるので、簡単にテストしてみる訳にも行かないので、
どなたか知っていたら教えてください。

A 回答 (1件)

 早いパソコンを使用すれば、そんなに時間がかからずに確認出来ました。



 結論:エラーになります。
 すき間が出来るようなら初期化するのがベターなのでしょうが、そうでないデータなら、主キーを自分で設定してオートナンバーを使用しない方が良いでしょう。

 私見ですが、オートナンバーを使用せず時刻を使用して任意のキーを生成する様にした方が、汎用性があって素敵だと思います。よ。
    • good
    • 0
この回答へのお礼

わざわざテストしてくださって、ありがとうございました。
そうですかぁ。やっぱりエラーになってしまいますか。
そうですよね。時分秒までを採用すれば必ずユニークになりますものね。。。
(StandAloneでオペレータさんが手入力する為、1秒間にダブってしまう恐れは全くないので。)
ただ、この番号をオペレータさんが通番として確認したいらしいので
やはりシーケンシャル番号にこだわる必要があるのです。。。。
そうなると、オートナンバーをやめて自分でMAX番号を取得して+1するとか、オートナンバーのままで一定期間に初期化するとかということに
なってしまいそうですね。。。。

とにかく、この問題については皆「そんな大きな数にならないから気にしないよ」とお気楽な意見で、私一人で懸念していたのですが、やっぱり
ちゃんと考え直すことにします。

納品後、何ヶ月もしてからオートナンバーがオーバーフローして
クレームが来ても嫌なので、これから頑張ります。
問題が大きくなる前に、専門家さんの意見が聞けてよかったです。
ありがとうございました。

お礼日時:2001/05/08 17:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QHBITMAPを初期化するとは?

CreateDIBitmap関数でfdwInit引数をCBM_INITにすると初期化し、0にすると初期化しないとありますが、これの意味がイマイチよくわかりません。

で、初期化しなかった場合、後でSetDIBits関数で初期化しるというようなことが書かれているのですが。

用は、初期化していない状態とは、ビットマップの大きさもろもろの情報のみがわかっている状態で、色情報のみ不明な状態であり、初期化するとはそれに加え色情報まで追加するということ、という考えであっていますか?

で、今の自分の考えが正しいことを前提にしての質問ですが、初期化してある状態としていない状態で、使用するメモリの量が大量に違うとか、CreateDIBitmapで初期化する作業は初期化しない作業に比べて計算時間がかなり違ってくるとかいうような大きな違いがあるのでしょうか。

それとも別になにかあるんですか?

Aベストアンサー

>初期化するとはそれに加え色情報まで追加するということ、という考えであっていますか?

それであっています。
初期化してもしなくてもDDBは作成します。この時点で新たに確保されるメモリは同じです。

DDBをDIBで初期化するという意味はわかりますか?
ディスプレイが16ビットカラーだとすると、DDBも16ビットカラーになります。DIBは8/16/24ビットなど何でもいいわけだから、結果としてフォーマットが変換されます。

SetDIBitsも含めて計算時間がかかるかどうかは重要ではありません。必要あれば呼び出すしかなくて、必要なければ呼び出さないだけの事です。

※MSDNによれば「fdwInit パラメータの CBM_CREATDIB フラグは、現在はもうサポートされていません。」とありますね・・・。

Q右上の×を押したときに行う処理を意図的に書きたい

今、OpenCVとOpenGLの両方を用いたプログラムを書いています。

OpenCVで物体を追跡したとおりにOpenGLで絵を動かそうとしており、
そのためには
glutDisplayFunc(display);
で呼び出しているdisplay()関数内で
OpenCVを用いた画像処理プログラムを書く必要があると思っています。

しかし、cvCapture *captureなどとした場合、
cvReleaseCapture(&capture);
などをプログラムの最後に行わなければなりません。

キーボードの「q」を打つことでメモリ解放および
プログラムの終了をさせることができるのですが、
ウィンドウの右上の×を押しても同様の処理をさせたいと
考えています。

ウィンドウの右上の×を押してもcvReleaseCapture(&capture)
などを行わせるにはどのように書けばよいのでしょうか?

Aベストアンサー

途中でreturnとかしていなければプログラムの最後に書けばいいです。×をクリックしても最終的にはここに来ますので。
実際は書かなくてもプロセス終了とともに自動的に開放されると思います。

Qcdの初期化

cdの初期化について質問です。

書き込むためのソフトにSonicStageVを使っているのですが音楽CDの作成ボタンを押すと、

「挿入されたディスクは書き込み済みです。CD-RWをご利用の場合は初期化ボタンから初期化することで書き込むことができます。」

と出てきます。
初期化しようと「初期化ボタン」探しているのですが見つかりません。

初期化ボタンとはどこにあるのでしょうか。
またこれ以外の方法で初期化することは不可能なのでしょうか。

Aベストアンサー

CD-Rはフォーマット(初期化)は出来ません、1回きりの書き込みです。
CD-RWをお使いなら、前の分は消去出来ます。
消去は書き込みソフトで出来ます、ソフトにより方法は違いがありますが、ソフトのツールバーのボタンを探して下さい。
上でもないソフトもありますが、何処かにありますので探す事です。

Q指定した数値より小さい数値がある行を抽出したい

バッチファイルで、指定した数値より小さい数値を含む行を抽出したいのですが、そのような事は可能でしょうか。

環境はWindowsXPです。

例えば、「a.txt」というテキストファイルがあって、以下の様な内容の場合に、「40」以下の数値を含む行を抽出するという事は可能でしょうか。

―――――――――――――――――
【a.txtの内容】
―――――――――――――――――
30
50
70
―――――――――――――――――

使用するコマンドは、WidnowsXP上で動作するものであればなんでも構いません。
何か良い方法をご存知の方がおられましたら、お教え頂けないでしょうか。
何卒、宜しくお願い致します。

Aベストアンサー

No3です。

がんばれば、バッチだけでも出来そうな気もしますが、時間がかかります。
awkが使えるのであれば、簡単に書けます。

set 入力値=5000
set 入力ファイル=a.txt
awk "{A=$0;if(sub(/^[^0-9]*/,B,A) && sub(/円.*$/,B,A) && A>0 && A<=X)print}" X=%入力値% %入力ファイル% > 結果ファイル.txt

QWii u について初期化の質問です

説明書をなくし、そして求められる質問及び回答がネットに存在していなかったので質問させていただきます。
Wii u の初期化ですが本体の初期化しかありません。
個体ソフトの初期化は可能でしょうか?そしてもし本体初期化をする場合でないと初期化ができない時は、インターネットで設定したIDとパスがあるんですが、それも消えてしまいますか?

Aベストアンサー

Wii uのメニューの本体設定を開き、データ管理というものの中にセーブデータが入っています。
あとは画面に案内が出ていると思うので省略します。

Qシェルスクリプトでファイル内の数値文字列を数値として扱うには

失礼します。
シェルスクリプトでファイル内のテキスト(数値文字列)を取得して、それを使って計算するにはどうすれば良いでしょうか?

str:ファイル内のテキスト(数値文字列)

res=$(( $str + 1 ))

・エラー
")syntax error: invalid arithmetic operator (error token is "


よろしくお願いします。

Aベストアンサー

bashをご使用と判断して

res=$(( $str + 1 ))
ではなく、
res=$(( str + 1 ))
だと思います。

> exprもやってみたのですが、処理が遅くなるので使いません。
興味があって以下のシェルで検証してみました。

#!/bin/bash

str=1
i=0

echo 'Using $((str + 1))'
date '+%H:%M:%S.%N'

while [ $i -lt 10000 ]
do
str=$(( str + 1))
i=`expr $i + 1`
done

date '+%H:%M:%S.%N'

exit

$ ./test.sh
Using $((str + 1))
09:18:46.290418000
09:18:56.929345000
これをexprに書き換えたところ
$ ./test2.sh
Using expr
09:19:00.302748000
09:19:19.259990000

exprだと19秒ですが、$(( 演算 )) だと10秒程度なので、演算が多くなれば確かにexprは不利ですね。

bashをご使用と判断して

res=$(( $str + 1 ))
ではなく、
res=$(( str + 1 ))
だと思います。

> exprもやってみたのですが、処理が遅くなるので使いません。
興味があって以下のシェルで検証してみました。

#!/bin/bash

str=1
i=0

echo 'Using $((str + 1))'
date '+%H:%M:%S.%N'

while [ $i -lt 10000 ]
do
str=$(( str + 1))
i=`expr $i + 1`
done

date '+%H:%M:%S.%N'

exit

$ ./test.sh
Using $((str + 1))
09:18:46.290418000
09:18:56.929345000
これをe...続きを読む

Qパソコンを初期化する質問煮について

パソコンを初期化すると良く質問されてますが人間がするなら好きな事出来るのでその初期化で良いのですが問題は量産タイプのPCご購入時に戻る訳でして初期化という意味ではないと思います。
何処の時点が初期化なのか解る人居れば、例えば組み立てただけの時点なのかOS入れた時点なのか?解る人居れば教えて頂ければ幸いです、お願い申し上げます、初期化の意味を?

Aベストアンサー

メーカーパソコンはOSとサービスソフトが何十本も入っているので

起動ディスクを使ってリカバリーディスク1枚~2枚と必要です。

起動ディスクを使っていたのはWindows 95~98のときで

今はリカバリーディスクとアプリケーションディスクが2枚~3枚です。


今は現在はDVDが有りますので自作PCはリカバリではなく

OSWindows 7のDVDを使ってOSのインストールも初期化も

OSWindows 7のDVD1枚で両方をまかなうことが出来ます。

QListViewの複数項目削除で意図しない挙動

前回質問した内容でほとんど複数削除は解決したように
見えたのですが、どういう条件か分からないのですが
複数選択(1件選択の場合は発生しない)して削除ロジックを
実行すると選択している項目と異なる内容の配列(ArrayList)の
データを削除してしまうという事が発生します。

これは何が原因で発生しているのでしょうか?
またこれの解決法をご教授頂けないでしょうか。

環境はVS2005(C#)、.NET Framework2.0です。

以下に該当部分のコードを載せます。
2000文字を超えてしまったので問題の部分以外は省略しました。

※添付画像が見にくかったので以下のURLに再掲示しましたので
参考にしてもらえるとありがたいです。
http://angelteatime.punyu.net/questionbox_20090312.jpg

画像では350件ある受信メール(ArrayListに1件ずつMailクラスで
格納されている)の先頭から8件ぐらい選択削除をしようとしている
画面です。

private void menuDelete_Click(object sender, EventArgs e)
{
// 選択アイテムが0のときは反応にしない
if(listView1.SelectedItems.Count == 0){
return;
}

if(listView1.Columns[0].Text == "差出人"){
// 受信メールのとき
for (int sel_index = listView1.Items.Count - 1; sel_index > -1; sel_index--) {
if (listView1.Items[sel_index].Selected) {
int nIndex = (int)listView1.Items[sel_index].Tag;
if (listView1.Items[sel_index].SubItems[1].Text == ((Mail)collectionMail[RECEIVE][nIndex]).subject) {
collectionMail[DELETE].Add(collectionMail[RECEIVE][nIndex]);
collectionMail[RECEIVE].RemoveAt(nIndex);
}
else{
MessageBox.Show(string.Format("選択した件名と削除するデータが異なっています。\nリスト位置件名:{0}\n実位置件名:{1}\n(リスト位置:{2}, 実位置:{3}", listView1.Items[sel_index].SubItems[1].Text, ((Mail)collectionMail[RECEIVE][nIndex]).subject, sel_index, nIndex), "エラー", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
this.textBody.Text = "";
}
else if(listView1.Columns[0].Text == "宛先"){

(上記のRECEIVEがSENDに変更のみでロジック変更なし)

}
else if(listView1.Columns[0].Text == "差出人または宛先"){

(上記のDELETEに変更されDELETEの配列に格納されたデータを削除)

}
// ツリービューとリストビューの表示を更新する
UpdateTreeView();
UpdateListView();

(ListViewのフォーカスを設定し直す)

}

前回質問した内容でほとんど複数削除は解決したように
見えたのですが、どういう条件か分からないのですが
複数選択(1件選択の場合は発生しない)して削除ロジックを
実行すると選択している項目と異なる内容の配列(ArrayList)の
データを削除してしまうという事が発生します。

これは何が原因で発生しているのでしょうか?
またこれの解決法をご教授頂けないでしょうか。

環境はVS2005(C#)、.NET Framework2.0です。

以下に該当部分のコードを載せます。
2000文字を超えてしまったので問題の部分以...続きを読む

Aベストアンサー

ごめんなさい
IndexOfではなく IndexKeyOfでした

int nIndex = listView1.SelectedItems.IndexKeyOf( nIndices[nLen-1].ToString() );

Qインスタンスフィールドの初期化方法

クラスのインスタンスフィールドを初期化する場合、次の3つが考えられますが、どれが一番スマートなんでしょうか。


クラスQ1はインスタンス変数int xを持つとします。

1.コンストラクタ内で初期化
e.g. Q1() {this.x = 1;}

2.宣言時に初期化
e.g. int x = 1;

3.インスタンス初期化子内で初期化
e.g.
{
x = 1;
}
Q1(){}

Aベストアンサー

スマート、という表現が主観的なので正解はなさそうに思います。強いて言えば、一つのプログラム内で意味もなく複数のやり方を混ぜて使うのはスマートじゃないだろうな、というくらいです。

参考までに、私は基本的にコンストラクタ内で初期化しています。staticな定数なら宣言時に初期化。インスタンス初期化子は使ったことがありませんし、人のプログラムでも見たことがありません。

QWEB画面のデザイン、発注者の意図とデザイナーの解釈が互いにうまく伝わらない場合、どうする?

WEBデザインの受発注において、発注者の意図と、デザイナーの解釈がうまく伝わらずにすれ違う場合はどのようにして折り合いをつけるのでしょうか?
(注 業界用語がどのように定義されているかは知りませんが、この質問においてはWEBデザイン=ブラウザ上に表示される、静止画像(フラッシュ動画は含む)の構成、色使い、カラムの数やその配置、などを指すものとします)

現場を知らないものとしては、こんなやり取りが想像されるのですが・・・

現場A
発注者「かっこいいWEBデザインにしてよ」
受注者「はい、わかりました」
数日後
受注者「できました。仰せのとおり、かっこいいWEBデザインにしました」
発注者「はあ? これのどこがかっこいいの? ぜんぜんダメじゃん」
受注者「では直しますのでどこが悪いのか、おっしゃってください」
発注者「いちいち言われなきゃ直せないようじゃだめだな」

現場B
発注者「ヤフーみたいなポータルサイトを作りたいんだよね。WEBデザインを頼むよ」
受注者「わかりました。ヤフーみたいなポータルサイトですね」
数日後
受注者「できました。ヤフーみたいなポータルサイトです」
発注者「なにこれ? ヤフーの画面をパクっただけじゃん」
受注者「おっしゃる通り、ヤフーみたいなポータルサイトですが・・・」
発注者「お前、バカか? こんなもん出したらヤフーから訴えられるわ! そんなこともわかんねえの?」
受注者「ではどんなデザインがお望みで?」
発注者「だからヤフーみたいなポータルサイトだけど、ヤフーじゃないデザインだよ!」
受注者「ヤフーみたいなポータルサイトだけど、ヤフーじゃないデザイン、とは具体的にはどのようなものですか?」
発注者「だから、それをお前らデザイナーが
”こんな感じでどうでしょうか?” 
”こんなスタイルのものもできますよ” 
”こういうのもかっこいいと思います”
って、何パターンか提示しろよ!」
受注者「そうならそうと言ってくださればいいのに。最初の指示の際に”何パターンか提示しろ”とのご指示がなかったものですから・・・」
発注者「ばか! そこを発注者の意をくみ取って、
”何パターンか提示しますから、その中からお好きの物をたたき台にする、という形式ではどうでしょうか?”
ってお前らの方から言ってくるのが当たり前だろうが!」
受注者「気が付きませんで申し訳ありません」


実際のところ、どうなっているのでしょうか?
ま、契約内容によって異なると思いますが、いろんな現場の状況を教えてください。

WEBデザインの受発注において、発注者の意図と、デザイナーの解釈がうまく伝わらずにすれ違う場合はどのようにして折り合いをつけるのでしょうか?
(注 業界用語がどのように定義されているかは知りませんが、この質問においてはWEBデザイン=ブラウザ上に表示される、静止画像(フラッシュ動画は含む)の構成、色使い、カラムの数やその配置、などを指すものとします)

現場を知らないものとしては、こんなやり取りが想像されるのですが・・・

現場A
発注者「かっこいいWEBデザインにしてよ」
受注者...続きを読む

Aベストアンサー

どちらの場合も発注側がDQN過ぎますね。

Aの場合は、好みとか方向性とかの共通認識のない時点でボタンのかけ違いが発生してます。

Bの場合は
そもそもデザインとデザイン提案を同義として捉えてるので論外です。
予算が余るほどあれば何度でも提案しますが、そんな仕事は基本ないので言われない限りデザイナーからは提案はないと思われます。
ディレクターが入っていれば、予算調整した上で提案もあるかもしれません。

起こるべくして起こった問題ですね。


人気Q&Aランキング