シーケンシャルアクセスについて教えてください。

テキストファイルの内容が...
***************************************************
aaa bbb ccc ddddd eeeee
aあ  bbb ccc ddddd eeeee
***************************************************

空白の部分(aとbの間)にはタブが入っています

このテキストファイルをアクセス2000において
テーブルにインポートする場合

Open...AS #1 'テキストオープン
set ... 'データベース・テーブルオープン
input #1 rireki

Mytable![項目名] = Mid(rireki, 1, 3)

上のような感じでテキストのデータをテーブルに取り込もうとすると
2行目の"aあ"の"あ"が全角なので"aあ"以外の空白も取り込んでしまいます

どうすれば全角を半角2桁として取り出すことが出来ますか?
宜しくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんにちは。

maruru01です。

区切りが必ずタブなら、
文字数ではなく区切りごとに取り出す方法はどうでしょうか?
これは、Splitという関数で、配列に格納出来ます。

Dim Youso As Variant

Youso = Split(rireki, vbTab)

これで、2行目なら
Youso(0) = aあ
Youso(1) = bbb
・・・以下略
と入ります。

また、単純にテキストファイルのデータをテーブルに取り込むだけでしたら、
インポート定義を作成して、ファイルのインポートをするという方法もあります。

DoCmd.TransferText acImportDelim, インポート定義名, テーブル名, テキストファイル名

なおインポート定義の作り方は、実際にメニューの[ファイル]→[外部データの取り込み]→[インポート]でテキストファイルのインポートウィザードを起動させます。
そして、[設定]に入ってそこで定義の詳細設定をして[保存]します。(実際にインポートまでする必要はありません。)
この時の保存名を、文字列で上の式の"インポート定義名"に使用します。
ちなみにこの場合はテーブルのレコードセットを開く必要はありません。
では。
    • good
    • 0

全角を半角2桁として計算したいのであれば、


Mid(rireki, 1, 3)

MidB(rireki, 1, 3)

の関数を使えば良いと思いますが。
一度ヘルプを確認してみて下さい。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qテキストに’の入っているデータをクエリーで処理したらエラーに..

テキストからMDBにデータを取込む際に、テキストの項目に、’(シングルフォーテーション)が入ってきて、INSERT文のクエリーで区切りが狂ってしまい、エラーが出てしまいます。
’(シングルフォーテーション)または ”(ダブルフォーテーション)または ,(カンマ) が入ってきても対応できる良い手段(記述方法)はないでしょうか?

Aベストアンサー

だいぶ遅いので解決、対応済みかもしれませんが
INSERTで、なくてレコードセットをして
AddNewしてあげれば取り込めると思います。
しかし、パフォーマンスの面や、
取り込んだデータを利用する場合に
INSERTやUPDATE、WHERE 条件に使用できない点があります。
以上のことを考えると、’(シングルフォーテーション)または ”(ダブルフォーテーション)または ,(カンマ)などは、最初から2バイト文字で作成してあげる
か、データ上では2バイト文字で扱うを原則に、データベース設計を行い、
取込の際に念のため’(シングルフォーテーション)または ”(ダブルフォーテーション)または ,(カンマ)をチェックし
2バイト文字に変換してしまうのがいいと思います。

QRst.FindFirst "名称コード" & "=" & "'101'"

タイトルのコードでは問題ないのですが、 101 を文字変数にすると「抽出条件でデータ型が一致していません」のエラーになります。この場合シングルクオーテーションはどういう意味なのでしょうか。
どうすれば良いのでしょうか。

dim Vcode as string
Vcode = "101"
Rst.FindFirst "名称コード" & "=" & Vcode

Aベストアンサー

FindFirst や、フォームの Filter プロパティで設定する場合は、SQL文のWHERE句の
内容を設定する必要があります。

フィールド名がテキスト型の場合は、

SELECT * FROM テーブル名 WHERE フィールド名 = "xxx"

のようになります。
で、FindFirst メソッドなんかで使う場合は、

rst.FindFirst フィールド名 = "xxx"

としたいところですが、条件の部分は文字列にしないといけません。
で、

rst.FindFirst "フィールド名 = "xxx""

こうすると、

フィールド名 =

で、切れてしまいます。
そこで、

rst.FindFirst "フィールド名 = 'xxx'"

このようにすればOKです。
次のステップとして、xxx の部分を変数を使ってやりたい場合。
単純に変数名に置き換えると、

rst.FindFirst "フィールド名 = '変数名'"

ですが、変数を、"" の中に記述すると、文字列として扱われますので、"" の外に
出してやる必要があります。
その場合、文字列と変数をつなぐためには、& を使います。

rst.FindFirst "フィールド名 = '" & 変数名 & "'"

で、このようになります。

FindFirst や、フォームの Filter プロパティで設定する場合は、SQL文のWHERE句の
内容を設定する必要があります。

フィールド名がテキスト型の場合は、

SELECT * FROM テーブル名 WHERE フィールド名 = "xxx"

のようになります。
で、FindFirst メソッドなんかで使う場合は、

rst.FindFirst フィールド名 = "xxx"

としたいところですが、条件の部分は文字列にしないといけません。
で、

rst.FindFirst "フィールド名 = "xxx""

こうすると、

フィールド名 =

で、切れてしまいます...続きを読む

QVB6.0exeから.NETのDLLを呼び出した場合の実行時エラー’429’について

お世話になります。

環境はWindowsXPです。

現在、VB6.0のexeから.NETのDLLを使用する・・・というのをしています。

以下の手順を踏み、実行してみたのですがどうも上手く行きません。。。
(1).NETのDLLを作成
(2)COMとして利用するために、.NET 2003コマンドプロンプトから「regasm」コマンドにてレジストリに登録
(3)tlbexpコマンドで、タイプライブラリを作成
(4)VB6のプロジェクトから(3)を参照設定する
(5)VB6から.NETクラスを生成し、呼び出す
(6)プロジェクトをコンパイルし、exeを生成

この手順にて実行すると「実行時エラー'429'ACtiveXコンポーネントはオブジェクトを作成できません」という
エラーメッセージが出てしまいます。

windows updateをしてみたり、VB6.0のランタイムをインストールしてみたりしたのですが、
どうもダメみたいで困っています。

解決方法などご存知の方がいらっしゃいましたら、
ご教授いただけると大変助かります。

よろしくお願いいたします。

お世話になります。

環境はWindowsXPです。

現在、VB6.0のexeから.NETのDLLを使用する・・・というのをしています。

以下の手順を踏み、実行してみたのですがどうも上手く行きません。。。
(1).NETのDLLを作成
(2)COMとして利用するために、.NET 2003コマンドプロンプトから「regasm」コマンドにてレジストリに登録
(3)tlbexpコマンドで、タイプライブラリを作成
(4)VB6のプロジェクトから(3)を参照設定する
(5)VB6から.NETクラスを生成し、呼び出す
(6)プロジェクトをコンパイルし、exeを生成

...続きを読む

Aベストアンサー

Exeで使用しているiniファイルやtlbファイルを最新のに置き換えて、もう一度regasmコマンドで登録してみてはいかがでしょう。

QVBScriptにて、テキストファイルAの中身を、テキストファイルBに行を指定して追加書きしたい

以下のように記述されたc:\tmp\test.txtの3行目に、
test.txt######################ここから
test1
test2
test3
test4
test5
##############################ここまで

以下のように記述されたc:\tmp\insert.txtの中身全てを追加書きして、
insert.txt####################ここから
insert1
insert2
insert3
insert4
insert5
#############################ここまで

c:\tmp\test.txtが以下のような結果になるVBScriptを作成したいです。
test.txt#####################ここから
test1
test2
insert1
insert2
insert3
insert4
insert5
test3
test4
test5
#############################ここまで

色々調べたのですがどうしても上手くいきません。
もし上記結果が得られる方法がありましたらご教授ください。

以下のように記述されたc:\tmp\test.txtの3行目に、
test.txt######################ここから
test1
test2
test3
test4
test5
##############################ここまで

以下のように記述されたc:\tmp\insert.txtの中身全てを追加書きして、
insert.txt####################ここから
insert1
insert2
insert3
insert4
insert5
#############################ここまで

c:\tmp\test.txtが以下のような結果になるVBScriptを作成したいです。
test.txt#####################ここから
test1
test...続きを読む

Aベストアンサー

#1 Wizard_Zeroです。
雑なコードですが・・・


Dim objFSO
Dim fileRead, fileWrite
Dim strTestLines
Dim i

Set objFSO = CreateObject("Scripting.FileSystemObject")

' test.txt を読み込んで配列化
Set fileRead = objFSO.OpenTextFile("test.txt")
strTestLines = Split(fileRead.ReadAll, vbCrLf)
fileRead.Close

' inset.txt を読み込み、test.txt を書き込み(上書き)で開く
Set fileRead = objFSO.OpenTextFile("insert.txt")
Set fileWrite = objFSO.CreateTextFile("test.txt", True)

' test.txt へ上書き
fileWrite.WriteLine strTestLines(0) ' 元の1行目
fileWrite.WriteLine strTestLines(1) ' 元の2行目
fileWrite.WriteLine fileRead.ReadAll ' insertのすべて

' 元の残り - 1行
For i = 2 To UBound(strTestLines) - 1
fileWrite.WriteLine(strTestLines(i))
Next

' 最後の1行は改行なし
fileWrite.Write strTestLines(UBound(strTestLines))

fileWrite.Close
fileRead.Close

#1 Wizard_Zeroです。
雑なコードですが・・・


Dim objFSO
Dim fileRead, fileWrite
Dim strTestLines
Dim i

Set objFSO = CreateObject("Scripting.FileSystemObject")

' test.txt を読み込んで配列化
Set fileRead = objFSO.OpenTextFile("test.txt")
strTestLines = Split(fileRead.ReadAll, vbCrLf)
fileRead.Close

' inset.txt を読み込み、test.txt を書き込み(上書き)で開く
Set fileRead = objFSO.OpenTextFile("insert.txt")
Set fileWrite = objFSO.CreateTextFile("test.txt"...続きを読む

QVB.net テキストボックスの入力制限全角のみ

VB.net初心者です
テキストボックスの入力制限で全角文字のみを実現させたいのですが、いろいろ検索して調査してもわかりません。
どなたかアドバイスをいただけると助かります、よろしくお願いします。

Aベストアンサー

強制的にIMEをONにする(VBAでの処理例ですが)
http://officetanaka.net/excel/vba/tips/tips16.htm

それでもIMEを意図的に切ったり、半角に変換は可能なので
入力確定した文字を確認し、半角が入力されている場合再度入力状態へ戻すなどの処理が必要ですね


人気Q&Aランキング

おすすめ情報