プロが教えるわが家の防犯対策術!

SQLServerかなりの初心者のものです。
SQLServer2000を使用しています。DTSパッケージを使用して、SQL上の既存のデータをAccessへコピーしたいと思います。
今まで、ウィザードを使用して丸ごとテーブルをコピーしたことはありますが、データを変換(加工?)してコピーしたことはありません。

たとえば、半角カナで表記されたものを、全角カナに変換しAccessのテーブルへ移動させることなどは可能でしょうか?
できれば元テーブルは既存のソフトのデータベース内にありますので、半角のままにしておきたいです。
移動先の書式だけを全角にしたいのですが可能でしょうか?

データの変換を行うには、ActiveX Scriptを利用するという段階までは調べました。
もしその場合はどのようなコード記述をすればよろしいでしょうか。大変お手数ですが、VBのコードをどなたか教えていただけないでしょうか。

よろしくお願いします。

A 回答 (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 @Alphanvarchar(256)
declare @Kananvarchar(256)
declare @Dakunvarchar(256)
declare @Kigonvarchar(256)
declare @Ndakunvarchar(256)
declare @DAlphanvarchar(256)
declare @DKananvarchar(256)
declare @DDakunvarchar(256)
declare @DKigonvarchar(256)
declare @DNdakunvarchar(256)
declare @Cntint
declare @Idxint
declare @Chrnvarchar(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
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
このように書くことで可能になるのですね。
参考にさせていただきます。

どうもありがとうございました。

お礼日時:2004/12/22 08:37

私も同じ経験をしましたw私の場合はActiveXScriptを使用しないでSQLサーバに半角→全角変換関数を作成しました


関数の作成方法は自分で調べてください。
関数の使用法はDTSパッケージをデザインで開いて、SQLサーバ接続とAccess接続をつないでる黒い矢印をダブクリしてデータ変換タスクのプロパティでSQLクエリのチェックボックスを選択するとSQL文を記述できますよね?
そこで抽出する項目に作成した関数を使用して変換しました。
例)関数 uf_HanToZen() を DB1に作成した場合
Select DB1.dbo.uf_HanToZen(vchHankaku) From Table1

この回答への補足

SQLサーバに変換関数を作成というのは、ユーザー定義関数のことでしょうか。
試してみたのですが、よく分かりませんでした。
CREATE FUNCTIONステートメントというものを使用すればよろしいのでしょうか。
関数はStrConvですか?
試したのですが、分かりませんでした。
よろしければ簡単にで結構ですので、教えていただけないでしょうか。
大変申し訳ないです。本当に初めてで分かりません。

補足日時:2004/12/16 18:46
    • good
    • 0
この回答へのお礼

ご返答、ありがとうございました。
可能であることが分かっただけでも前進です。
ただし、大変申し訳ないのですが、一日調べても分からない点がありましたので、
どうか再度助言していただけないでしょうか。

お礼日時:2004/12/16 18:46

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

関連するカテゴリからQ&Aを探す