重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

カンマ区切りのテキストファイルをAccessにインポートしたのですが、[NO]というフィールドの、数値のデータ型が文字列型の認識になっており、VBAでそのフィールドの最大値を求めようするとうまくいきません。取り合えず今はクエリでいったんVal関数を使い数値に変えてから利用しています。その際更新クエリを利用しようとしたのですが、うまく行かなかったので、選択クエリで

式:Val([NO])

としてそのフィールドを利用しています。
結構考えたのですが、知識不足でいい方法が浮かびません。もっと良い方法があれば教えてください。お願い致します。M(v_v)M

A 回答 (4件)

やっと原因がわかりました:-)



フィールド名"No"が曲者でした。Accessには、Yes/No型という型があるので、Noとフィールド名はYes/NoのNoと判断されてしまうのです。

予約語と同じフィールド名は大括弧でくくると使用できるので、これでOK.

Sub Max_2()

Dim M_No As Long

M_No = DMax("[No]", "T_Import")

End Sub
    • good
    • 0
この回答へのお礼

お返事遅くなりました!!出来ました(^v^)!
本当にありがとうございます。フィールド名に括弧をつけたりするのは、どうしても省略してしまいがちですが、これからは少し気を付けていきたいと思います!(>v<)!何度も回答して頂いて本当にありがとうございました。
他の皆様もありがとうございます!!

お礼日時:2004/07/12 09:24

DMax 関数の戻り値が、数値型じゃなくなってるのでしょうね。



型変換関数を使ってやれば大丈夫です。
また、レコードが存在しないことも考えて、Nz 関数も使った方がいいかも。

> M_No = DMax("No", "T_Import")
M_No = CLng(Nz(DMax("No", "T_Import"),0))

この回答への補足

ご返答ありがとうございます。ご指摘頂いたように変更して実行してみたのですが、先ほどまでと同様に値が入らず、Empty値にどうしてもなります。実行した際にどの場合でもエラーにはならないんですが・・・・・(?_?)
全く他に原因があるのでしょうかね??情報が少なく分かりにくい質問で申し訳ございません。

補足日時:2004/07/08 17:09
    • good
    • 0

NOフィールドのデータは全て数値に変換できるのでしたら、問題のテーブルをデザインビューで開いて、NOフィールドのデータ型を「数値型」に変えてあげればよいと思います。



インポートする前でしたら、インポートするときのウィザードで、カラムごとのデータ型を指定する画面がありますので、そこで調整できます。

この回答への補足

No1の方、No2の方、ご返答ありがとうございます。申し訳ございませんがまとめて補足をさせて頂きます。最初私もフィールドで数値型にしているので、そのまま利用できると思っていたのですが、下記のように

No1の方、No2の方、ご返答ありがとうございます。申し訳ございませんがまとめて補足をさせて頂きます。最初私もフィールドで数値型にしているので、そのまま利用できると思っていたのですが、下記のように(コードの一部)

Sub Max_No()

Dim Db As Database
Dim Rs As Recordset
  Dim M_No As Long

Set Db = CurrentDb
Set Rs = Db.OpenRecordset("T_Import", dbOpenTable)

Rs.MoveFirst
M_No = DMax("No", "T_Import")

Rs.Close: Set Rs = Nothing
Db.Close: Set Db = Nothing

End Sub

とした時にM_Noに最大値が代入されません。(>_<)もっと簡単な見落としをしていますでしょうか??

補足日時:2004/07/08 16:49
    • good
    • 0

その [NO] というフィールドの型は文字列型なんですよね?テーブルのデザインビューで [NO] の型を文字列型→数値型(フィールドサイズは長整数型とか整数型とか)にすると自動的に数値に変換されます。


ただし、数値に変換できないデータがあるとエラーになると思います。
    • good
    • 0

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