- ベストアンサー
DTSパッケージでSQLServerのデータをAccessにコピーする方法
- SQLServer2000の初心者向けに、DTSパッケージを使用してSQL上のデータをAccessにコピーする方法を解説します。
- データの変換も可能で、例えば半角カナを全角カナに変換してAccessのテーブルに移動することもできます。
- データの変換にはActiveX Scriptを利用し、VBのコードを記述する必要があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
送れてごめんなさい^^;回答したのにそのまま見てませんでした。 私の作ったのはユーザ関数です バカみたいに長いけど↓こんなんです /******************************************** 関数名:uf_HanToZen 引数 :nvarchar(256) 入力文字列 int 出力文字数 戻り値:nvarchar(256) 出力文字列 説明 :半角文字を全角に変換して出力する。 **************************************** create function uf_HanToZen (@Str as varchar(256), @Len as int = 0) returns nvarchar(256) as begin declare @Alpha nvarchar(256) declare @Kana nvarchar(256) declare @Daku nvarchar(256) declare @Kigo nvarchar(256) declare @Ndaku nvarchar(256) declare @DAlpha nvarchar(256) declare @DKana nvarchar(256) declare @DDaku nvarchar(256) declare @DKigo nvarchar(256) declare @DNdaku nvarchar(256) declare @Cnt int declare @Idx int declare @Chr nvarchar(2) set @Alpha = '0123456789@ABCDEFGHIJKLMNO' + 'PQRSTUVWXYZabcdefghijklmno' + 'pqrstuvwxyz' set @Kana = 'ァアィイゥウェエォオカキクケコサシスセソ' + 'タチッツテトナニヌネノハヒフヘホマミムメモ' + 'ャヤュユョヨラリルレロヮワヲン' set @Daku = 'ガギグゲゴザジズゼゾダヂヅデド' + 'バパビピブプベペボポヴ' set @Kigo = ' 、。,.・:;?!゛゜`^~_ー/|''"()[]{' + '}「」+-=<>\$%#&*@' set @DAlpha = '0123456789' + '@ABCDEFGHIJKLMNO' + 'PQRSTUVWXYZ' + 'abcdefghijklmno' + 'pqrstuvwxyz' set @DKana = 'ァアィイゥウェエォオ' + 'カキクケコサシスセソ' + 'タチッツテトナニヌネノ' + 'ハヒフヘホマミムメモ' + 'ャヤュユョヨラリルレロヮワヲン' set @DDaku = 'ガギグゲゴザジズゼゾダヂヅデド' + 'バパビピブプベペボポヴ' set @DKigo = ' 、。,.・:;?!゛゜`^' + ' ̄_ー/|’”()[]{' + '}「」+-=<>¥$%#&*@' set @Ndaku = @Alpha + @Kana + @Kigo set @DNdaku = @DAlpha + @DKana + @DKigo if @Len > 0 set @Str = left(@Str, @Len) --濁音カナの置換 set @Len = len(@Str) set @Cnt = 1 while @Cnt < @Len begin set @Chr = substring(@Str, @Cnt, 2) set @Idx = charindex(@Chr collate Japanese_Unicode_BIN, @Daku) if @Idx % 2 = 1 set @Str = replace(@Str collate Japanese_Unicode_BIN, substring(@Daku, @Idx, 2), substring(@DDaku, @Idx / 2 + 1, 1)) set @Cnt = @Cnt + 1 end --濁音以外の置換 set @Len = len(@Str) set @Cnt = 1 while @Cnt <= @Len begin set @Chr = substring(@Str, @Cnt, 1) set @Idx = charindex(@Chr collate Japanese_Unicode_BIN, @Ndaku) if @Idx > 0 set @Str = replace(@Str collate Japanese_Unicode_BIN, substring(@Ndaku, @Idx, 1), substring(@DNdaku, @Idx, 1)) set @Cnt = @Cnt + 1 end return @Str end
その他の回答 (1)
- mitu_fu
- ベストアンサー率90% (9/10)
私も同じ経験をしましたw私の場合はActiveXScriptを使用しないでSQLサーバに半角→全角変換関数を作成しました 関数の作成方法は自分で調べてください。 関数の使用法はDTSパッケージをデザインで開いて、SQLサーバ接続とAccess接続をつないでる黒い矢印をダブクリしてデータ変換タスクのプロパティでSQLクエリのチェックボックスを選択するとSQL文を記述できますよね? そこで抽出する項目に作成した関数を使用して変換しました。 例)関数 uf_HanToZen() を DB1に作成した場合 Select DB1.dbo.uf_HanToZen(vchHankaku) From Table1
お礼
ご返答、ありがとうございました。 可能であることが分かっただけでも前進です。 ただし、大変申し訳ないのですが、一日調べても分からない点がありましたので、 どうか再度助言していただけないでしょうか。
補足
SQLサーバに変換関数を作成というのは、ユーザー定義関数のことでしょうか。 試してみたのですが、よく分かりませんでした。 CREATE FUNCTIONステートメントというものを使用すればよろしいのでしょうか。 関数はStrConvですか? 試したのですが、分かりませんでした。 よろしければ簡単にで結構ですので、教えていただけないでしょうか。 大変申し訳ないです。本当に初めてで分かりません。
お礼
ご回答ありがとうございます。 このように書くことで可能になるのですね。 参考にさせていただきます。 どうもありがとうございました。