2008年3月18日
AccessをVSSで管理する
ちょっとした開発に有益なAccessですが、チームプログラミングとなると効率が落ちるというのが一般的な認識です。ですが、 最近のAccessはVSSでオブジェクト管理できる様になっています。
ここでは下記の環境で説明します。
Access:Access 2003
VSS:Visual SourceSafe2005
(1)「Access2003 Add-in: Source Code Control」をダウンロードしてインストールします。
(2)Accessのツールメニューに「SourceSafe」メニューが表示されます。「データベースをSourceSafeに追加」を選択し、VSSにオブジェクトを登録します。
※DB内に接続できないリンクテーブル等があるとエラーになります。
リンクテーブルを削除するか、接続できる状態にしておく必要があります。
(3)後は、編集する前にチェックアウトを行って編集します。
(4)(3)のAccessDBを他の人が使うことはできません。複数のメンバーで開発を行う場合には各自のPCで、 ツールメニューから「SourceSafeのプロジェクトからデータベースを作成」を選択し、 AccessDBを作成します。この場合、コピーされるのはオブジェクトだけです。Access環境は各自設定する必要があります。
なお、Access2003にSP3を適用している場合、(4)でフォームやレポートの 「インポートエラー」が発生することがあります。これはSP3のバグだそうです。 バグフィックスはコチラからダウンロードする必要があります。
Access2003 Service Pack3 HotFix
↓クリックして頂けるとうれしいです(ワンクリック詐欺ではないです(笑))
人気blogランキングへ
日本ブログ村へ
投稿者 danna : 08:48 | コメント (0) | トラックバック
2007年8月29日
@@IDENTITY
IDENTITY句が指定されているテーブルに新規レコードをインサートした後で設定された値を取得したいときに@@IDENTITYで取得できます。
VBA(ADO使用)で、下記の通り記述します。
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = コネクションオブジェクト
.CommandText = INSERT文・・・・①
.Execute
End With
Set rst = New ADODB.Recordset
rst.Open "SELECT @@IDENTITY ", コネクションオブジェクト, adOpenDynamic, adLockOptimistic・・・・②
②のSQLに①のINSERT文も一緒に書いていたら、データは挿入されるんだけどレコードが4件作成されてしまいました。INSERT文と@@IDENTITYを分けたらうまくいきました。原因を追及している暇がなかったのですが、一緒じゃダメなのかな。
↓クリックして頂けるとうれしいです(ワンクリック詐欺ではないです(笑))
人気blogランキングへ
日本ブログ村へ
投稿者 danna : 16:11 | コメント (0) | トラックバック
2007年8月16日
IDENTITY項目に明示的に値を設定する方法
SQL Serverで項目に自動採番するようIDENTITYを設定している場合、通常のINSERT文を実行するとエラーになってしまいます。
下記の手順が必要。
・INSERT句で項目名を全て列挙する。
・SET IDENTITY_INSERTを使用する。
(Ex) Fld1がIDENTITY項目の場合。
SET IDENTITY_INSERT テーブル名 ON
INSERT INTO テーブル名 (Fld1, Fld2, Fld3) VALUE (1, "あいう", 123);
SET IDENTITY_INSERT テーブル名 OFF
Access2003 VBA + ADOで動作確認済。
参考サイト:
↓クリックして頂けるとうれしいです(ワンクリック詐欺ではないです(笑))
人気blogランキングへ
日本ブログ村へ
投稿者 danna : 14:34 | コメント (0) | トラックバック
2006年4月10日
今さらVBのデータ型
Microsoft Visual Basic6.0のデータ型を纏めたもの
投稿者 danna : 18:14 | コメント (0) | トラックバック
2005年9月 1日
ファイル属性取得
GetAttr(ファイル名)の戻り値で判別可能
・vbNormal(0) = 通常ファイル
・vbReadOnly(1) = 読み取り専用ファイル
・vbHidden(2) = 隠しファイル
・vbSystem(4) = システムファイル
・vbDirectory(16) = フォルダ
・vbArchive(32) = アーカイブ
GetがあるんだからもちろんSetもあります。
投稿者 danna : 15:31 | コメント (0) | トラックバック
2005年4月12日
再帰呼び出し
Cでは使うテクニックですが、VBで使っているのを見ました。でもパラメータにByValもByRefも書いてないしグローバル変数を多用しているような処理でとてもじゃないですが、再帰を考えているとは思えません。月次処理で今まで順調に動いていて今月初めてトラぶりました。再帰をやめたら動きました。
・再帰は複雑になりますので、もっとシンプルにループなどで対処できないか考えましょう。
・再帰を使用する場合には、グローバル変数を使用しない。パラメータはByValにするなどしましょう。
投稿者 danna : 12:14 | コメント (0) | トラックバック
2005年3月22日
ダイアログボックス
VBでダイアログボックスを使用した場合、ダイアログボックス内で既定のフォルダ以外に移動すると可憐度ディレクトリ(ドライブも?)最後に移動した場所に変更されてしまう。この為、カレントが自分のプログラム起動ディレクトリだと思っていたり、相対ディレクトリ指定でファイルアクセスしたりするプログラムはダイアログ実行前後でカレントディレクトリを保存しておく必要がある。
まぁ絶対パスでアクセスしていれば、こんなことは気にしなくてもいいのだけど・・・。
投稿者 danna : 12:42 | コメント (0) | トラックバック
2005年2月22日
[VB6]動的配列の使用
動的配列(Redimステートメント)を使用し動的配列を定義する場合、使用し終わったらEraseステートメントでメモリを解放すること。
某プロジェクトで、定義しっぱなしで再利用をしていた(しかもLOOP内)プログラムが「アプリケーションエラー」でこけることがあった。そもそもプログラムの作りそのものに問題がある気がするが・・・。
投稿者 danna : 15:33 | コメント (0) | トラックバック
2005年2月15日
[VB6]StrConvで全角に変換できない
下記の3文字はStrConvの全角変換でまともに変換されない。
\(円マーク)
'(シングルクォーテーション)
"(ダブルクォーテーション)
個別にReplace関数で変換しないとダメ。これはバグだろぉ。