MSDE FunClub
Microsoft Data Engine FunClub
MSDE初心者向けメーリングリスト過去ログ[1808]番
 
[TOP]>[MSDE初心者向けメーリングリスト過去ログ(1808番)]>[ウィンドを閉じる]
 
SQLServer2005時代でも
開発の基本は T-SQL
上巻で T-SQL の基礎作り
 
SQLServer2005時代でも
運用の基本はバックアップ
下巻でバックアップ手法を学びましょう
PASSJ人気コンテンツで学んだ後は下巻でさらなる学習を!
 
ウィンドを閉じる
MSDE/SQLServer FAQ
MSDE / MSDE2000 
技術情報サポート
初心者向け
メーリングリスト
過去ログの表示
技術者向け
メーリングリスト
過去ログの表示
メーリングリスト
活動状況の
表示
MSDE TOP メニュー
MSDEトップメニューに移動します
 

 
RE:  ID がいくつにセットされるのか知りたい

Date: Wed, 22 Mar 2006 09:52:36 +0900
From: "Kohichiroh Ohta" <who@example.co.jp>


いつもお世話になっております。太田です。

Nakamuraさんへ

私がそういう場面で使う手法を紹介します。
もしかしたらよくない方法かもしれません。
その場合はご指摘ください。


まず、IDですが今はACCESSで言うところの
オートナンバー型にされていると思います。
それを varchar(50) に変えてください。

次に以下のようなストアドプロシージャを作成します。

--------------------------------------------------
ALTER PROCEDURE myNewID
AS

-- uniqueidentifier 型の変数を宣言
DECLARE @ID uniqueidentifier

-- uniqueidentifier 型の一意な値を得る
SET @ID = NEWID()

-- varchar型へ変換して出力
SELECT CAST( @ID AS varchar(50) ) AS NewID

RETURN
--------------------------------------------------

NEWID関数はGUIDを返す関数です。
実行するだびに二度と重複しない値を返してくれます。
myNEWIDは、NEWID関数で得たGUID値を文字列型に変換しています。


私の場合インターフェイスアプリケーションはACCESSで開発しますので
ここからはACCESSの話をします。
ACCESSのモジュールに以下のような関数を作ります。

--------------------------------------------------
Public Function myNewID() As String

    Dim cmd As New ADODB.Command
    Dim RS As New ADODB.Recordset

    ' コマンドにストアドプロシージャをセットする
    Set cmd.ActiveConnection = conn
    cmd.CommandText = "dbo.myNewID"
    cmd.CommandType = adCmdStoredProc

    ' コマンドを実行しレコードセットに取り込む
    Set RS = cmd.Execute

    ' NewIDを返す
    myNewID = RS!NewID

    RS.Close

    Set RS = Nothing
    Set cmd = Nothing

End Function
--------------------------------------------------

この関数を実行して、得た値をフォーム上の
フィールドか何かに保存しておきます。
レコードの挿入時にはその値を書き込みます。
つまり事前にIDの値を自分で用意して
それをレコードにも書き込むという手法です。

ちなみにイミディエイトウィンドウにて
?myNewID
と入力すると
4BCF806F-0A36-4CEE-8A96-750620DADD7B
などという値が返ってきます。
これは完全にユニークな値で、世界中のコンピュータで
同時に実行しても、あるいは何度実行しても
同じ値は出ない。
らしいです。

これを私なりに利用した方法なのですが
あまり自信はありません。




[MSDE/SQLServerに関して、今、どんなことにお困りですか?]
よろしければお困りの内容を、電子メールで教えて下さい。
質問を電子メールで作成する


[ウィンドを閉じる]

[MSDE/SQLServer FAQ ]

[MSDE / MSDE2000 技術サポート情報一覧]

MSDE TOP ページに移動する

 
 
 
 
 
 
 
MSDE FunClubに関するご意見・ご要望等ございましたら、
msdefun@horikawa.ne.jp までご連絡下さい。
MSDEを始めとする各種データベースシステムの開発、コンサルタントに関するご要望等は、
msdedev@horikawa.ne.jp までご連絡下さい。