アクセスのデータベースのフィールドを日付/時刻型にしております。aspでINSERTを使用しています。テキスト型でしたら、NULLの許可がありますが、日付/時刻型にはそのような項目がありません。時刻型にNULLでセットしたいのですが、その方法がわかりません。いろいろ調べましたが…。ご伝授の程、よろしくお願い致します。

例.
フィールドaにhtmlから引きわたったTimesをセットする。
※Timesには空白("")がRequestされています。
 テーブル名db_1

書き込み(##を使用していません)
insert INTO db_1(a)VALUES ('"& Request("Times") &"')"

更新
update db_1 set a=#"& Request ("times") & "# where id = "&Request ("id")&"")

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

A 回答 (3件)

#2について、


ちょっと、そちらでどういう風にやられているのかはよくわからないのですが、
多分、SQLコマンドを文字列のような形で保持して
発行されてるんだと思うのですが、
そうだとすると、単に、文字列(SQLコマンド)を動的に作ればいいですよね。
つまり、
"INSERT INTO db_1 VALUES ( field1,field2 ,field3 ,field4 );"
のfieldの各部分を必要なら
~" & IIF(Request("Times")="","NULL","'" & Request("Times") & "'") & "~
に置き換えればいいと思うのですが
IIFがVBScriptにないとしても、言いたいことは同じです。(変数にして置き換えすればいいですよね)
    • good
    • 0

#1の補足について


IFを使うしかないと思いますが、

IF Request("Times")="" then
insert INTO db_1(a)VALUES (NULL)
ELSE
insert INTO db_1(a)VALUES ('"& Request("Times") &"')"
END IF
みたいな感じでうまくいきませんか?

この回答への補足

ありがとうございます。

Time(時刻型)の項目が5つあります。そのすべての判定を行うにはIFで判定させると、すこし苦労します。

Timeの項目がNULLの場合は、NULLをVALUES ('"& Request("Times") &"')にセットしたいのですが‥

すみませんがよろしければ、ご指導の程、宜しくお願い致します。

補足日時:2004/10/19 10:09
    • good
    • 0

NULLをINSERTでセットする場合は


単に
VALUES(NULL)
だと思います。
なので、Timesが空白の時NULLをセットするようなものと振り分けたらいいと思います。

勘違いしてたらすみません。

この回答への補足

早速の回答ありがとうございます。

>Timesが空白の時NULLをセットするようなものと振り分けたらいいと思います。

詳しく教えていただけないでしょうか。

普通時(2004/10/15など)と空白時(NULL)を区別させるにはどのようにすればよろしいでしょうか。

空白時にはVALU(#'& times &'#)をVALUE(NULL)にするには、IF文を使うしかありませんのでしょうか。

ご指導の程、よろしくお願いいたします。

補足日時:2004/10/18 21:38
    • good
    • 0

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

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

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

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

Qinsert時に日付のフィールドにnullを入れたい

テーブルに以下のフィールドがあります。
[No],[区分],[キーNo],[日付]
このテーブルに日付のデータのない、以下のようなデータをインサートしたいのですが、
[No],[区分],[キーNo]
1 ,kbn1 , key1


strSQL1 = "INSERT INTO テーブル1"
& " ([No],[区分],[キーNo],[日付])" _
& " VALUES ("1","kbn1","key1",NULL )"

とするとエラーが出てしまいます。日付フィールドに何も入れないようにinsert文を書くにはどうしたらよいでしょうか。
すみません、アドバイス等宜しくお願いします。

Aベストアンサー

strSQL1 = "INSERT INTO テーブル1"
& " ([No],[区分],[キーNo])" _
& " VALUES ("1","kbn1","key1")"
でよいのでは?
それより[日付]フィールドでNull許可してないのでは?

Qrequest.Servervariables("SERVER_NAME")の戻り値に余分なピリオドが付加される条件

ASPでサーバー環境変数を取得した際、サーバーアドレスに
「.」が付加された値が返されるクライアントがあります。

【request.Servervariables("SERVER_NAME")の戻り値】
通常ユーザー ⇒ "123.123.123.123"
あるユーザー ⇒ "123.123.123.123."

このピリオドが付加されるクライアントの条件が知りたいのですが...
ご存知の方はいらしゃいませんか?

Aベストアンサー

条件無いと思います。
多分ですが、ハイパーリンク書く時か、アドレスバー手入力時に、誤って余分に入力してしまったのではないでしょうか?

ちなみに IIS と IE で確認してみました。

http://LocalHost/var.asp
http://127.0.0.1/var.asp
http://127.0.0.1./var.asp

#var.asp は For Each ~で環境変数を出力するASP

3つとも同じASPが表示されました。
#もしかして末尾にピリオド1個多くてもIPアドレスとして認識されるバグ(?)

Q『列名 '担当者CD' があいまいです。』

VS2005のASP.NETで開発しております。
ここで、SelectCommandにて、2つ目のテーブルより名称を参照しようとJOIN関数をしようしましたら『列名 '担当者CD' があいまいです。』とのエラーメッセージです。 これはどこが悪いのでしょうか?
いろいろ修正してみたのですが解りません。
解る方がおりましたらアドバイスを頂けないでしょうか?
よろしくお願いいたします。

Aベストアンサー

複数のテーブルから、同じ名前の列をとりだす場合、どちらのテーブルの値なのか特定できないため、このエラーがでます。
なので、担当者CDの前にテーブル名をつけましょう。

例えば以下のようなテーブルがふたつあるとして…
テーブル1
担当者CD
担当者名

テーブル2
ID
担当者CD

SELECT テーブル2.担当者CD
FROM テーブル2
INNER JOIN テーブル1
ON テーブル1.担当者CD=テーブル2.担当者CD
WHERE テーブル2.担当者CD='99999'
ORDER BY テーブル2.担当者CD

のように書きます。(列が多い場合は、テーブルに別名をつけてあげると、多少、楽できるかも)

QRequest.Querystringについて

ASPについて教えてください。
基本的な質問です。プログラム初心者です。

プログラムを前の方へ辿っていっても、
以下のスクリプトでRequest.QueryStringする"YM"や"MOVE"が定義されているところが見当たりません。
環境変数?にもそのようなものは、無さそうなのですが。

この"YM"や"MOVE"はどのようなものと考えれば良いでしょうか?
スクリプトなので上から順番に処理されていくと理解していたのですが、
そもそも間違いでしょうか?

<%
sYM = Request.QueryString("YM")
If sYM = "" Then
iYear = Year(Now())
iMonth = Month(Now())
Else
iYear = Left(sYM,4)
iMonth = Right(sYM,2)
End If
sMove = Request.QueryString("MOVE")
If sMove <> "" Then
If sMove = "Next" Then
ix = 1
Else
ix = -1
End If
iTmp = DateSerial(iYear, iMonth + ix, 1)
iYear = Year(iTmp)
iMonth = Month(iTmp)
End If

iLastDay = Day(DateSerial(iYear, iMonth + 1, 1 - 1))
iDay = 1 - Weekday(DateSerial(iYear, iMonth, 1)) + 1
Response.Write ""
Response.Write ""
Response.Write ""
sPrg = "calendar.asp?YM=" & iYear & Right("00" & iMonth, 2)
Response.Write ""
Response.Write ""
Response.Write ""

For x = 0 To 6
If x = 0 Then
sCol = "#EECCCC"
Else
sCol = "#EEEEEE"
End If
Response.Write ""
Next
For y = 0 To 5
Response.Write""
For x = 0 To 6
If x = 0 Then
sCol = "#FFCCCC"
Else
sCol = "WHITE"
End If
If Date() = DateSerial(iYear, iMonth, iDay) Then
sCol = "#FFE6CC"
fToday = True
Else
fToday = False
End If
If iDay > 0 Then
Response.Write ""
Else
Response.Write ""
End If
iDay = iDay + 1
If iDay > iLastDay Then
Exit For
End If
Next
Response.Write ""
If iDay > iLastDay Then
Exit For
End If
Next
Response.Write "

ASPについて教えてください。
基本的な質問です。プログラム初心者です。

プログラムを前の方へ辿っていっても、
以下のスクリプトでRequest.QueryStringする"YM"や"MOVE"が定義されているところが見当たりません。
環境変数?にもそのようなものは、無さそうなのですが。

この"YM"や"MOVE"はどのようなものと考えれば良いでしょうか?
スクリプトなので上から順番に処理されていくと理解していたのですが、
そもそも間違いでしょうか?

<%
sYM = Request.QueryString("YM")
If sYM = "" Then
iYear = Year(Now...続きを読む

Aベストアンサー

こん竹輪。(もぐもぐ。
いや。でも、やっぱおでんは白滝。。。(知らん。


>>Request.QueryString

んー。まず、コレを誤解?してる?

http://www.site-cooler.com/kwl/asp/10.htm#QueryString

QueryString
っちゅーと、「URLの後ろにくっついたパラメータを取得するためのもの」
ぐらいの認識でいいと思います。

なので。。。


>>"YM"や"MOVE"が定義されているところ

YMやMOVEはあらかじめ定義しておく変数。
ってわけではない。
って事になります。。。かね。
(あえて言うなら、前のページで定義して送られてくる?かな?


なので。。。
このソースのASPページにアクセスされた時点で

ttp://www...hogehogehoge.asp?YM=201209&MOVE=Next

のようなURLでアクセスされてきている。ことになるかと思います。


で、アクセスされてきたら。。。

sYM = Request.QueryString("YM")

で、URLパラメータの中から「YM」を取得し、「sYM」に「201209」を格納。

sMove = Request.QueryString("MOVE")

で、URLパラメータの中から「MOVE」を取得し、「sMove」に「Next」を格納。


となる事になります。

特に例外処理のようなものもないので。。。
YMとMOVEが必ず渡ってくるようにするつもりで作り込まれているようではありますね。


なので。。。

>>プログラムを前の方へ辿っていっても、

コレの疑問を解決するのならば、このASPページの前画面のページのソースを追う必要がある。
ですかね。

こん竹輪。(もぐもぐ。
いや。でも、やっぱおでんは白滝。。。(知らん。


>>Request.QueryString

んー。まず、コレを誤解?してる?

http://www.site-cooler.com/kwl/asp/10.htm#QueryString

QueryString
っちゅーと、「URLの後ろにくっついたパラメータを取得するためのもの」
ぐらいの認識でいいと思います。

なので。。。


>>"YM"や"MOVE"が定義されているところ

YMやMOVEはあらかじめ定義しておく変数。
ってわけではない。
って事になります。。。かね。
(あえて言うなら、前のページで定義して送...続きを読む

Q[ASP]Request名そのものを!

こんにちわ。

test.asp?komoku1=aaa&komoku2=bbb

となっている場合、test.aspでは
moji1 = Request("komoku1")
moji2 = Request("komoku2")
として利用できます。

そうではなく、komoku1 や komoku2 という自体を取り込むにはどうしたらいいですか?

Request(1).Name などいろいろやってみましたがまったくだめでした。
どうすれば、例でいう「komoku1」や [komoku2]を取得したらいいでしょうか?

Aベストアンサー

<%
For Each name In Request.QueryString
Response.write name & "<BR>"
Next
%>

で、項目のみ出力されます。
あとは、うまく料理してみてください。


おすすめ情報