SQLServerかなりの初心者のものです。
SQLServer2000を使用しています。DTSパッケージを使用して、SQL上の既存のデータをAccessへコピーしたいと思います。
今まで、ウィザードを使用して丸ごとテーブルをコピーしたことはありますが、データを変換(加工?)してコピーしたことはありません。
たとえば、半角カナで表記されたものを、全角カナに変換しAccessのテーブルへ移動させることなどは可能でしょうか?
できれば元テーブルは既存のソフトのデータベース内にありますので、半角のままにしておきたいです。
移動先の書式だけを全角にしたいのですが可能でしょうか?
データの変換を行うには、ActiveX Scriptを利用するという段階までは調べました。
もしその場合はどのようなコード記述をすればよろしいでしょうか。大変お手数ですが、VBのコードをどなたか教えていただけないでしょうか。
よろしくお願いします。
No.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
ご回答ありがとうございます。
このように書くことで可能になるのですね。
参考にさせていただきます。
どうもありがとうございました。
No.1
- 回答日時:
私も同じ経験をしましたw私の場合はActiveXScriptを使用しないでSQLサーバに半角→全角変換関数を作成しました
関数の作成方法は自分で調べてください。
関数の使用法はDTSパッケージをデザインで開いて、SQLサーバ接続とAccess接続をつないでる黒い矢印をダブクリしてデータ変換タスクのプロパティでSQLクエリのチェックボックスを選択するとSQL文を記述できますよね?
そこで抽出する項目に作成した関数を使用して変換しました。
例)関数 uf_HanToZen() を DB1に作成した場合
Select DB1.dbo.uf_HanToZen(vchHankaku) From Table1
この回答への補足
SQLサーバに変換関数を作成というのは、ユーザー定義関数のことでしょうか。
試してみたのですが、よく分かりませんでした。
CREATE FUNCTIONステートメントというものを使用すればよろしいのでしょうか。
関数はStrConvですか?
試したのですが、分かりませんでした。
よろしければ簡単にで結構ですので、教えていただけないでしょうか。
大変申し訳ないです。本当に初めてで分かりません。
ご返答、ありがとうございました。
可能であることが分かっただけでも前進です。
ただし、大変申し訳ないのですが、一日調べても分からない点がありましたので、
どうか再度助言していただけないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- USBメモリー・SDカード・フラッシュメモリー SH-04H SDカードにデータが書き込めない(削除は可能) 4 2022/08/08 10:42
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Excel(エクセル) エクセルでのデータの統一に関して リストを作成する際、元データをコピペでリストに転記しており、元デー 2 2022/08/31 15:33
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- ドライブ・ストレージ 古い外付けHDDから新品外付けHDDへのデータ移行方法 (Mac) 2 2022/12/11 02:01
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外部結合で取得した項目にNVL関数
-
スペースを検索したい
-
INSERT文などの列名などの半角...
-
EXCELのVBA NULL、スペ...
-
Trimの使い方
-
DTSパッケージについて
-
ORACLEの「DECODE」と同じ意味...
-
差し込み後、元データを変更し...
-
SELECT 文 GROUP での1件目を...
-
エクセルで最後の文字だけ置き...
-
1、Rstudioで回帰直線を求める...
-
INSERT文でフィールドの1つだ...
-
処理件数を非表示にしたい
-
for whichの使い方
-
重複していないレコードの抽出...
-
過剰なオブジェクト指向脳から...
-
SQLサーバから、項目の属性(型...
-
フィルターかけた後、重複を除...
-
速度が低下し無効になったアド...
-
SQL Date型の列から年月だけを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スペースを検索したい
-
顧客データベースを作る場合、...
-
あいまい検索で英文字の全角半...
-
末尾の全角スペースの削除
-
INSERT文などの列名などの半角...
-
select文のwhere句に配列を入れ...
-
ORACLEの「DECODE」と同じ意味...
-
SQLServer2005のストアドプロシ...
-
ストアドの戻り値で配列を返す方法
-
外部結合で取得した項目にNVL関数
-
WHERE条件の最終桁のスペースに...
-
MYSQL 右埋め 半角スペース
-
DTSパッケージについて
-
セッション変数に格納されてい...
-
Trimの使い方
-
アンケートメールをACCESSに取...
-
EXCELのVBA NULL、スペ...
-
ストアドプロシジャで配列
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
おすすめ情報