トップページ⇒php
1001コメント403KB

==ASP== Part 3

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/07/28 23:07ID:33/XGu54
ASP について語るスレ その3

【過去スレ】
==ASP== Part 2
http://pc2.2ch.net/php/kako/1028/10280/1028024916.html
==ASP==
http://pc.2ch.net/php/kako/984/984840107.html
065264204/11/13 15:57:17ID:tao/R1VF
ごめんなさい。
上の書き込み、642です
0653nobodyさん04/11/13 17:04:15ID:???
>651
<% @LANGUAGE = JScript %>
<!-- 上はページの先頭行(<html>開始タグよりも前)に書くこと -->
必要なHTML部分を記述
<%
// デフォルトスクリプト言語をJScriptにしたので、scriptタグで
// JScriptのコードを囲まなくても、<%〜%>で代用できる
// むしろ、scriptタグで囲んでしまうと、JScriptコードから
// VBScriptのプロシージャを呼べないっぽい
var hensu = new String(Request.Form("hensu"));
if(hensu != "undefined"){ FUN()}
%>

<!-- <SCRIPT LANGUAGE="JScript" runat="Server">
function FUN(){
</script>
<%
↑ではなく、こう↓する-->
<SCRIPT LANGUAGE="VBScript" runat="Server">
Function FUN()
  response.write("FUNファンクションに入った<p>")
  VBで色々と記述
End Function
</script>
<!--
%>
<SCRIPT LANGUAGE="JScript" runat="Server">
}
</script>
-->
0654nobodyさん04/11/13 17:52:27ID:???
<script language="VBScript" runat="Server">
function FUN() {
  Response.Write "FUNファンクションに入った<p>"
  'VBScriptで色々と記述
}
</script>

<script language="JScript" runat="Server">
if ((Request.Form("hensu").Item()) != "") { FUN(); }
</script>
065565404/11/13 17:58:14ID:???
654は>>651へのレスね。

>>651
3行目の FUN() に 「;」 がない
JScriptからVBScriptの関数を呼び出す場合はVBScriptの関数を先に定義しておく必要があったような気がする。

漏れもJScript+レガシASP使い。
ここお勧めだから参考にするといいよ。
http://homepage3.nifty.com/aya_js/wsh/wsh202.htm
http://homepage3.nifty.com/aya_js/wsh/index.htm
0656nobodyさん04/11/15 14:41:40ID:50MlQxDc
>653さん、>654さん
ありがとうございます。
土曜日は、残念ながら上からの指示で、全部VBScriptで書くことになってしまいました。
せっかく具体的な記述を頂いたのに、申し訳ありません。
ただ、僕が基本的にJScriptを使っているので、また教えて頂いた記述を使う機会があると思います。
テキストで保存させて頂きました。

で、今日は今日で、新しい壁にぶつかっているのです…。
formから送られた内容を受け取り、変数に代入したら、1度目はいいのですが、それ以降ブラウザの更新をかけても、変数の内容が空にならないんです。

<% Response.Buffer = true
A = Request.Form("A")
%>
<html><head><title>フォームの練習</title><body>
<meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS">
<FORM action="./renshu_form.asp" method="POST">
    Aを入力して下さい<br>
    <INPUT type="text" name="A" size="30" maxlength="32"><br>
    入力内容が正しければ、サブミットボタンを押して下さい<p>
    <input type="submit">
</FORM>
<%
If A <> "" Then
    Response.Write("ifに入った<br>")
End If
%>

これだと、2回目以降、常に変数Aに前回の値が入っているので、必ずif節に入ってしまいます。
また、更新をかける度に「情報を再送信しないと、ページを更新できません」という警告が出るのですが、以前formを使った記述を書いた時は、こんな警告は出なかったように思うのですが…。

申し訳ありませんが、またご教授お願いします。
0657ASP素人04/11/15 18:41:13ID:wubhQkHV
613です。
みなさんに教えてもらったとおりやってみたのですがだめでした。
カンマ入れたりしても・・・・・・

'=================================================
'----- DBに接続
'=================================================
Sub ConnDB()
'スクリプトと同じフォルダにあるAccessのdb1.mdbに接続します。
'DBName="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & _
'Server.Mappath("member.mdb")
Set ObjConn = Server.CreateObject("ADODB.Connection")
ObjConn.Mode = 2
ObjConn.open "member" 'DBName
StrSQL = "select * from member"
Set ObjRS = Server.CreateObject("ADODB.Recordset")
ObjRS.Open StrSQL, ObjConn
'Response.Write ObjRS.Fields("name")
'Response.Write ObjRS.Fields("mail")
End Sub

'=================================================
'----- DBにデータを追加
'=================================================
Sub UpdateDB()
ObjRS.AddNew
ObjRS.Fields("name") = name
ObjRS.Fields("mail") = mail
ObjRS.Update
End Sub

で、結局こういう状況です
0658ASP素人04/11/15 18:42:23ID:wubhQkHV
エラーが
現在の Recordset は更新をサポートしていません。
プロバイダか、選択されたロックタイプの限界の可能性があります。

となっていますが、神様、教えてください
0659nobodyさん04/11/15 22:05:55ID:???
>>657
通りすがり、かつASPの事はそれほど詳しくないのだけど…

> ObjRS.Open StrSQL, ObjConn

ロックタイプを指定しない場合、既定では読み取り専用のはずだけど。
Openメソッドの第4引数に適切なロックタイプを設定すればいいのでは?
0660nobodyさん04/11/15 23:12:36ID:???
>657
>ObjConn.open "member" 'DBName
そもそも Conection.Open メソッドに "member" ちうテーブル名だかmdbファイル名だか分からない
ものを渡しているのが気になるのだが。

とりあえず >659 氏の仰るとおり既定のロックタイプは 1(adLockReadOnly) なので、
第四引数に 3(adLockOptimistic) か 2(adLockPessimistic) を指定しよう。

ObjRS.Open StrSQL, ObjConn, ,3

みたいに
0661ASP素人04/11/16 11:27:18ID:Dc5bDdUY
とりあえず早速やってみました。

で先には進んだわけなのですが、

'=================================================
'----- DBにデータを追加
'=================================================
Sub UpdateDB()
ObjRS.AddNew
ObjRS.Fields("name") = name
ObjRS.Fields("mail") = mail
ObjRS.Update      (←ここでエラー)
End Sub


Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] 更新可能なクエリであることが必要です。
とでます。
もうすこしみたいなのでよろしくお願いします。

0662nobodyさん04/11/16 11:49:07ID:???
ん? OLEDB-ODBCでAccess MDBにつなぐときって、
そもそも更新可能なレコードセット作れたっけ?

一辺、単純にUPDATE文投げてみそ。
066361504/11/16 13:43:40ID:???
っつぅかASP素人殿、mdbの更新対象テーブルには
主キーが存在しますか?

Accessのテーブルは主キーがないと更新できないらしいです。
066466004/11/16 21:43:12ID:???
>662-663
VBScript で以下の文を実行したらちゃんと走ったから、ODBCのせいでも主キーのせいでもない模様。
ASP は環境作るのめんどいからパス。
時に、objRS とか name ってどこで宣言してるの?まさか局所変数だったりして…
objRS や objConn を別のサブルーチンで Close してたり、 "SELECT FROM 〜" の 〜 を
mdb名と勘違いしてたり、objRS が Applcation 変数だったり…

前提
ADOX で JET4.0 の hoge.mdb を作成し、 ADODB.CONNECTION を刺して
connection.execute メソッドで以下の 2つの SQL 文を投入。
CREATE TABLE hoge( id INTEGER , name TEXT(25) );
INSERT INTO hoge VALUES(2, 'mumumu');

--------------------
set c = createobject("adodb.connection")
set r = createobject("adodb.recordset")
c.mode=2
c.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:\hoge.mdb"
r.open "select * from hoge", c,,3
r.addnew
r.fields("id") = 4
r.fields("name") = "mamama"
r.update
c.execute "UPDATE hoge set name='mimimi' where id=2"
c.execute "insert into hoge values(5,'momomo');"
r.close
c.close
set r = nothing
set c = nothing
----------------
0665nobodyさん04/11/16 21:44:53ID:???
>>656
> 更新をかける度に「情報を再送信しないと、ページを更新できません」という警告が出るのですが、
POSTで送っているから。
更新すると Request.Form("A") の内容もまた送られてしまうため、Aが空にならないんだと思う。
0666nobodyさん04/11/16 21:46:40ID:???
>>661
connectionとかって関数またげるんだっけ?
066766004/11/16 21:47:31ID:???
そうだ、あと mdb ファイルとそれの格納フォルダに IUSER_{サーバ名}:C (変更)以上の権限があるかも
確認してみれ。ASPの実行ユーザが変えられていたら、そのユーザが mdb を変更できるか。
0668nobodyさん04/11/16 23:40:33ID:???
>>667
確かその場合はエラーメッセージが分かりやすく表示されるはず
066961504/11/17 15:06:19ID:???
>664
>時に、objRS とか name ってどこで宣言してるの?まさか局所変数だったりして…
漏れももしやとは思ったのだが、エラーメッセージがそれらしく出力されてるから
グローバルになってるのかとおもたのだよ。

ASP素人氏には各変数をどこで定義しているか聞きたい。
0670ASP素人04/11/17 21:41:41ID:87XfvWNx
>>615さん
<%

DimObjConn ,ObjRS

'パラメータを取得します。
name = Request.Form("name")
mail = Request.Form("mail")
act = Request("act")

'デフォルトページを登録画面に設定します。
if act = "" then
act = "ent"
end if



これでしょうか?
一番初めの部分です
0671nobodyさん04/11/18 01:45:44ID:???
> DimObjConn ,ObjRS
  ~~~~~~~
ここにスペースが無いのはコピペミス?
067261504/11/18 09:47:24ID:???
なんとなく原因は>667のような気がしてきたよ。

>670
<% のすぐ下の行に
Option Explicit
を書き込んでみて。未定義の変数が使われるとエラーが表示されるようになるから。
既に記述していたら不要だけど。
現状では変数の有効範囲が曖昧で混乱を招いているからおながいします。
0673ASP素人04/11/18 13:31:45ID:DA9fr5zw
>>671
それはコピペミスでしたすんません。

>>672
やりました。
そしたら
Microsoft VBScript 実行時エラー (0x800A01F4)
この変数は宣言されていません。: 'name'
/boshu.asp, line 6

と・・・・

権限は一応チェックしますた。
067465904/11/18 14:29:47ID:???
>ASP素人氏
可能なら使用している全ての変数を明示的に宣言して。
あとベタだけどAccessのメニューでテーブル[member]に書き込み権限があるか
みてください。
0675nobodyさん04/11/18 16:25:00ID:y/ZLmA11
スレ違いかもしれんが教えください。

ttp://www.geocities.jp/activex_treeview/

↑OS2000 Vbはインストールされていない端末で
ActiveXを使ったツリービューが見れないだよね。
xp や NTでは見ることが出来たんだが・・・?

どの端末もVbが入っていれば見れます。
Vbなしで見る方法ありますか?
Vbランタイムでは×

ASPスレにも書き込むけど、だれか教えて。何が必要なんだ〜??
067661504/11/18 18:24:49ID:???
>673
「この変数は宣言されていません」っていうエラーが消えるまで
変数を定義しる。ついでにその変数は何のために使う変数なのか
コメント入れとけばメンテが楽になるよ。まぁこの変数名なら分かるけど。

それから更新対象のテーブルの定義を書き込んでみて。
フィールド名とかデータ型の一覧。
そしてフィールド名の左隣の列に鍵マークが付いているか。
Accessならテーブル選んでデザインをクリックかなんかすれば見られる。
067761504/11/18 18:30:23ID:???
>675
マルチは感心せぬが。

classidをレジストリから検索したら、ツリービューコントロールは
COMCTL32.OCX
の中に入っているらしいことが判明。

対象PCにコピーしてREGSVR32.EXEで手動登録すれば動くかも。
※OSがどうなっても保証はしません。知りません。独り言です。気合いでGO!
067865904/11/18 21:06:15ID:???
C:\Temp\www\member.mdbに
テーブル member(主キー無し)
カラム name (テキスト型 サイズ:20), mail (テキスト型 サイズ:20) 作成後、
ASP素人氏のコードを借りて IIS5.0 の環境で下記スクリプトを実行してみた。

(フォーム)

<html>
<head>
  <title>Test Form</title>
</head>
<body>
<form action="test.asp" method="post">
  name : <input type="text" name="name" size="20"><br>
  mail : <input type="text" name="mail" size="20"><br>
  <input type="submit" name="submit" value="送信">
</form>
</body>
</html>
067965904/11/18 21:08:46ID:???
(test.asp)

<html>
<head>
  <title>ASP_TEST</title>
  <%
  Dim ObjConn ,ObjRS
  Dim Name, Mail

  Sub ConnDB()
    Set ObjConn = Server.CreateObject("ADODB.Connection")
    ObjConn.Mode = 2 'adModeWrite - 2 adModeReadWrite - 3
    ObjConn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};" & _
                      "DBQ=C:\Temp\www\member.mdb"
    ObjConn.Open
    StrSQL = "select * from member"
    Set ObjRS = Server.CreateObject("ADODB.Recordset")
    ObjRS.Open StrSQL, ObjConn,, 3
  End Sub
  Sub UpdateDB()
  ObjRS.AddNew
  ObjRS.Fields("name") = Name
  ObjRS.Fields("mail") = Mail
  ObjRS.Update
  End Sub
  %>
</head>
068065904/11/18 21:09:47ID:???
<body>
  <%
  Name = Request.Form("name")
  Mail = Request.Form("mail")
  Call ConnDB
  Call UpdateDB
  ObjRS.Close
  ObjConn.Close
  Set ObjRS = Nothing
  Set ObjConn = Nothing
  %>
  <h4>テーブルmemberの内容</h4>
  <%
  Call ConnDB
  Response.Write "<table border=" & """1""" & ">"
  Do Until ObjRS.EOF
  Response.Write "<tr><td>"
  Response.Write ObjRS.Fields("name").Value & _
         "</td><td>" & ObjRS.Fields("mail").Value & "</td></tr>"
  ObjRS.MoveNext
  Loop
  Response.Write "</table>"
  ObjRS.Close
  ObjConn.Close
  Set ObjRS = Nothing
  Set ObjConn = Nothing
  %>
</body>
</html>
068165904/11/18 21:14:12ID:???
テーブルの更新・閲覧共に何の問題も無し。
ユーザー権限とかテーブルのアクセス権に問題が無いなら
やっぱり変数のスコープの問題かも。。。
0682ASP素人04/11/19 12:15:43ID:LqCvowdj
>>659さん
一応コピペして一部なおしてやってみたのですが、
エラーでがでました。

ってことはおっしゃるとおり

>ユーザー権限とかテーブルのアクセス権に問題が無いなら
やっぱり変数のスコープの問題かも。。。

ということなんでしょうかね〜。

IIS5でXPproの環境なのですが、
↑のユーザー権限とテーブルのアクセス権について徹底的に教えていただけますか?
068365904/11/19 13:12:52ID:???
>>678-680はインデントを入れる為に全角スペースが入ってる(書き込みの時にタブが無視される)
ので使うなら取り除かないとエラーが出るよ。

>ユーザー権限とテーブルのアクセス権について徹底的に教えていただけますか?

いや、別にそんなに難しい話じゃないのよ('A`)
ユーザー権限については>>660氏が>>667で書いてある事がどうかって事だし、
テーブルのアクセス権は、mdb作成→テーブル作成の間に「ユーザー/グループの権限」
をいじっていなければ問題は無いはずだから(Access2000の話なんでOffice XP以降のバージョンは違うかも)。

気になっていたんだけど、>>670と>>657は両方とも boshu.asp 内にあるのかね?
差し支えなければ boshu.asp のコード全部晒してみ?
それと>>615氏の言っている更新対象のテーブルの定義も。
068467504/11/19 14:30:07ID:???
>>677

どうもありがとうございます。がんがって挑戦してみます。
068567504/11/19 15:32:47ID:???
>>677
駄目ですた。あと何がいるのだろう・・・。
068661504/11/19 16:15:11ID:???
>685
駄目ですたって何が駄目ですたの?
表示されなかったから駄目って書いたのだろうけど、
REGSVR32.EXEでの登録は成功したの?
あと一応登録後、再起動してから試してみた?

っつぅかぶっちゃけ分かんないしスレ違いなので書きたくないのだが(ォ

VisualStudio(6.0)に付いてくるDependency Walkerっつぅツールで
COMCTL32.OCXを覗くと、このファイルが使用している他のファイルのリストが
みられる。
0687nobodyさん04/11/19 16:25:56ID:Dfi0Lnle
掲示板作ってる途中で、ふと気付いたんですけど。

ユーザーAが必要事項を記入してサブミットを押しました。
サーバ内のテキストファイルがopenして、入力内容を書き込んでます。
この時、ユーザーBがサブミットボタンを押したらどうなるのでしょうか?
テキストファイルをcloseする前に、open命令が出る形になるので、マズイような気がします。

もしエラーが出るようなら、解決策、もしくは皆様の対策を教えて下さい。
068865904/11/19 16:46:13ID:???
>>675
参考になるかよーわからんけど
【How to use licensed ActiveX controls in Internet Explorer】
http://support.microsoft.com/default.aspx?scid=kb;en-us;159923
068967504/11/19 16:49:37ID:???
>>685
すみません。
REGSVR32.EXEで登録しました。
レジストリーエディタでID検索したら
hitはしたので登録は大丈夫だと思います。
もちろん再起動もしました。でも表示されませんでした。

Dependency Walkerはこれから使ってみようと思います。

スレ違いなのは承知です。ただどこのスレに書けばいいのだろう・・・。
615氏もう少しお付き合いください。申し訳ない。
069067504/11/19 17:04:39ID:???
>>688
ありがとうございます。頑張ってみます。また結果書きます。
069167504/11/19 17:39:38ID:???
>>688
まじ感動!!出来ました。かなり苦戦いたしましたが表示されるようになりました。
http://support.microsoft.com/kb/159923
ここも参考になりました。615氏もご迷惑をおかけしました。

0692nobodyさん04/11/19 23:09:27ID:???
>687
「ファイル ロック 排他」あたりをキーワードにぐぐってみれ。

具体的にはApplication.LockとUnlockを使うことになるのかな。
0693nobodyさん04/11/20 01:45:28ID:???
>>687

Application.Lock
  ↓
ファイル入出力とか複数ユーザが同時にやるとヤバそうな処理
  ↓
Application.Unlock
0694nobodyさん04/11/20 09:08:44ID:???
Application.LockはApplication変数をロックするだけだよ。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpiis/iishelp/iis/htm/asp/vbob84h7.asp

テキストファイルのロック制御はFileSystemObjectが勝手にやってくれてるものだと思ってるんだが…
その辺詳しい人いる?
0695ASP素人04/11/20 10:10:40ID:+ocqxxRz
<%
Option Explicit
DimObjConn,ObjRS

'パラメータを取得します。
name = Request.Form("name")
mail = Request.Form("mail")
act = Request.Form("act")

'デフォルトページを登録画面に設定します。
if act = "" then
act = "ent"
end if

'登録確認画面でエラーチェックをします。
if act = "entconf" then
flg_err = ""
if name = "" then
flg_err = "name"
end if
if mail = "" then
flg_err = "mail"
end if
end if

'エラーがある場合はエラー表示画面に移動させます。
if flg_err <> "" then
act = "err"
end if
0696ASP素人04/11/20 10:11:45ID:+ocqxxRz
'=================================================
'HTML表示処理開始
'=================================================
%>
<% Call ConnDB'DBに接続します。 %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=x-sjis">
<title>メンバー募集フォーム</title>
</head>
<body>
<h2>メンバー募集フォーム</h2>
<%
'-- ページ内容の表示
Select Case act
Case "entconf"'登録確認
Call Gamen_entconf
Case "kan"'処理完了
Call Gamen_kan
Case "err"'エラー
Call Gamen_err
Case else
Call Gamen_ent
end select

%>
</body>
</html>
<%
Call CloseDB

0697ASP素人04/11/20 10:13:41ID:+ocqxxRz
'=================================================
'----- 登録画面
'=================================================
Sub Gamen_ent( )
%>
<form method="POST" action="boshu.asp">
<table border="1">
<tr>
<td>お名前</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>メールアドレス</td>
<td><input type="text" name="mail"></td>
</tr>
</table>
<input type="hidden" name="act" value="entconf">
<input type="Submit" name="sub" value="確認">
<br>
</form>

<%
End Sub
0698ASP素人04/11/20 10:14:05ID:+ocqxxRz

'=================================================
'----- 登録確認画面
'=================================================
Sub Gamen_entconf( )
%>
<h2>登録内容を確認してください</h2>
<form method="POST" action="boshu.asp">
<table border="1">
<tr>
<td>お名前</td>
<td><% =name %></td>
</tr>
<tr>
<td>メールアドレス</td>
<td><% =mail %></td>
</tr>
</table>
<input type="hidden" name="act" value="kan">
<input type="Submit" name="sub" value="登録実行">
<br>
<!-- 隠し項目にセット -->
<input type="hidden" name="name" value="<% =name %>">
<input type="hidden" name="mail" value="<% =mail %>">
</form>

<%
End Sub
0699ASP素人04/11/20 10:15:02ID:+ocqxxRz

'=================================================
'----- 処理完了画面
'=================================================
Sub Gamen_kan( )
%>
<% Call UpdateDB()'データを追加します。 %>
<form method="POST" action="boshu.asp">
<table border="0">
<tr>
<td>
<h2>ご登録ありがとうございました</h2>
</td>
</tr>
</table>
<input type="hidden" name="act" value="iti">
<input type="Submit" name="sub" value="登録画面へ">
<br>
</form>
<%

End Sub

0700ASP素人04/11/20 10:16:04ID:+ocqxxRz

'=================================================
'----- エラー表示画面
'=================================================
Sub Gamen_err( )
%>
<form method="POST" action="boshu.asp">
<table border="0">
<tr>
<td><h2>エラーがあります</h2></td>
</tr>
</table>
<input type="button" value="戻る" onclick="history.back();">
<br>
</form>
<%

End Sub

'=================================================
'----- DBに接続
'=================================================
Sub ConnDB()
'スクリプトと同じフォルダにあるAccessのmember.mdbに接続します。
DBName="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & _
Server.Mappath("member.mdb")
Set ObjConn = Server.CreateObject("ADODB.Connection")
ObjConn.open DBName

End Sub
0701ASP素人04/11/20 10:17:09ID:+ocqxxRz

'=================================================
'----- DBにデータを追加
'=================================================
Sub UpdateDB()
StrSQL = "insert into member ("
StrSQL = StrSQL & " name, "
StrSQL = StrSQL & " mail "
StrSQL = StrSQL & ") values ("
StrSQL = StrSQL & "'" & name & "',"
StrSQL = StrSQL & "'" & mail & "'"
StrSQL = StrSQL & ")"
ObjConn.Execute StrSQL
End Sub

'=================================================
'----- DBを閉じる
'=================================================
Sub CloseDB()
ObjConn.Close
Set ObjConn = Nothing
End Sub
%>
0702ASP素人04/11/20 10:17:54ID:+ocqxxRz
これで以上です。
0703nobodyさん04/11/20 14:00:41ID:???
>694
Applicaton.Lockを使う場合
ファイルへのロックというより、ファイル操作するコードへの進行をロックする感じ。
Javaのsynchronizedとか、Win32APIだとCriticalSectionぽい発想かな。
0704nobodyさん04/11/20 14:56:12ID:???
>>703
いやだからApplication.Lockじゃ
>ファイルへのロックというより、ファイル操作するコードへの進行をロックする感じ。
が出来ないって言ってるわけで。
0705ネタではありません。04/11/20 15:35:17ID:???

すみません、困っています。
どなたかWEBアプリケーションを作れる方、
相談にのっていただけませんか?
「こういうWEBプログラムが作りたい」という案は
すでにあります。自宅サーバーもすでにあります。
平日の夜、都内で焼肉をおごります。

もし、「それなら作れるよ」ということでしたら
数万円の謝礼をお支払いする用意があります。
よろしくお願いいたします。
070665904/11/20 17:42:11ID:???
書き込もうとしたら30分差でプロパ規制か…orz

>ASP素人氏

>>695-701を Option Explicit を取った状態で
>>678-680で使ったmdbで試してみた。

………普通に登録できますた。。。

ConnDB()とUpdateDB()を>>657のコードに差し替えて
ConnDB()内の ObjConn.open .... の部分だけ書き換えたコードも
試したけど、これも登録できますた。

コピペの内容を見る限り、
とりあえず変数の取りまわしがおかしいって事はなさそうだから、
後は権限周りとmdbのテーブルを徹底的に確認しる!
それとパーソナルファイヤーウォールとか入っているなら無効にしてから
実行してみて。

それでも駄目なら、そちらのテスト手順の問題かWindows XPにSP2当てておかしくなりますた。。。
ぐらいしか思いつかんです。
0707テム・レイ04/11/21 01:14:31ID:IhuSU57V
質問。
まれにあるIISの制御不能状態。
(再起動すれば直るやつ)
の発生条件は結局なんなのでしょうか。

無限ループやってるとかバカなオチではないです。
どうもまれに発生するようで・・
0708テム・ジン04/11/21 01:59:39ID:ZshPsh4w
質問。
まれにあるパソコンの制御不能状態。
(再起動すれば直るやつ)
の発生条件は結局なんなのでしょうか。
0709ASP素人04/11/28 00:40:42ID:dbF1/8oJ
>>659サンとこのスレの皆様

解決しますた。
やはり権限に問題あったと思われます。
DをNTFSからFAT32にしてやってみたところちゃんとできますた。
心から感謝申し上げます。
で・・・・

'=================================================
'----- DBにデータを追加
'=================================================
Sub UpdateDB()
StrSQL = "insert into member ("
StrSQL = StrSQL & " name, "
StrSQL = StrSQL & " mail "
StrSQL = StrSQL & " id "
StrSQL = StrSQL & " pass "
StrSQL = StrSQL & ") values ("
StrSQL = StrSQL & "'" & name & "',"
StrSQL = StrSQL & "'" & mail & "'"
StrSQL = StrSQL & "'" & id & "'"
StrSQL = StrSQL & "'" & pass & "'"
StrSQL = StrSQL & ")"
ObjConn.Execute StrSQL
End Sub

↑のとこなんですけど
idとpassを増やしてみたらすぐエラーですた・・・。
きっとStrSQL = StrSQL & " name, "のnameの後の「,」とかにいろいろ関係しているのかな?
とか思ったんですけど、どうなんでしょうか・・・??
どういうふうに直せばよろしいでしょうか?
0710nobodyさん04/11/28 01:09:00ID:???
列名と値、それぞれmailとidの後に,が抜けてる。
列名の方はまんま「mail,」「id,」として、値の方は「〜 & "'"」を「〜 & "',"」ね。

SQLでエラーが出たら、まずエラーになってるSQL文を画面なりログに出力してみませう。
あと、コマンドラインからosqlが使えるなら、osqlで接続してそのSQL文を直接投げると、
SQLServerからもう少し詳しいエラー情報をもらえるかも。
0711nobodyさん04/11/28 09:45:45ID:???
>>709
そんな書き方するなら絶対にRecordSet越しにAddNewした方がいい。
マジで。
0712nobodyさん04/11/28 10:01:54ID:???
>>711
断る
0713ASP素人04/11/28 16:34:50ID:30XD0iuk
>>710サン
無事成功しますた。
ありがとうございました。
0714nobodyさん04/11/28 21:15:58ID:???
ADODB.Commandマジおすすめ。
0715nobodyさん04/11/29 11:22:27ID:???
便乗で聞いてみたいんだけど、DBを更新するときSQL文で更新させた方がいいの?
俺はいつもADO使ってUpDateしちゃうんだけど。
0716nobodyさん04/11/30 01:35:41ID:???
相手がSQL Serverなら当分はいいんじゃないの。
ただ、ADO以外の世界に行ったとき、UPDATEが使えないと困ることもあるかもね。
0717nobodyさん04/11/30 07:22:16ID:tivpUcTG
一日に一回、とあるDatabaseをチェックして、しきい値を超えてる場合
アラームmailを対象者に対し発信するというプログラムを作ることになりました。

多分、バッチを動かして・・・という事だとは思うんですが・・・

ご経験のある方いらっしゃいますか?
参考になるサイトなど教えていただけると幸いです。
(IIS+SQLServer)

0718nobodyさん04/11/30 12:01:09ID:???
どうせ社内のSQL Serverしか使わないからADO使うことにしとく。
0719nobodyさん04/11/30 12:23:23ID:???
>>717
VBS+BASP21+タスクスケジュールでそれっぽいの作ったことがあるが...

ASPとは関係ないんではないかい?
072071704/11/30 20:31:15ID:tivpUcTG
>>719
レスありがとうございます。
いろいろ調べて見ました。
BASP21のbhelper.exe? basp21p.iniの設定?・・・

basp21p.iniに**.asp(メール送信)のパスを書いて
そのaspファイルを実行するためのbatファイルを
タスクスケジュールで動かすということでしょうか?

さらに調べて見ます・・・
072171904/11/30 20:47:48ID:???
>>720
VBScriptファイル(例:dbcheck.vbs)にDBのチェックルーチンを書いてBASP21のSendMailを使ってメールを送る。
タスクスケジュールからそのVBScriptファイルを起動するように設定するだけ。batは別にいらない。

ほかにもいろいろやり方ある。がんがれ。
0722nobodyさん04/11/30 20:51:52ID:???
>717
SQL Server Agent に監視してもらうのがいいんでない?
072371704/12/01 19:20:01ID:mG+eCHVU
719さん、アドバイスありがとうございます。
下記のようなものをタスクで動かすといったことでしょうか?
m_from = "******@***.co.jp"
m_title = "アラーム"
m_to = "*****@***.co.jp"
m_sv = "***.**.**.***"

Set Conn = Server.Createobject("ADODB.Connection")
Conn.Open "usr1","usr1","user2"

SQL = "select * from alarm"
Set db = Server.Createobject("ADODB.Recordset")
db.Open SQL,Conn,3,3

gen = trim(db("AAA"))
zan = trim(db("BBB"))
shamei = trim(db("CCC"))

if gen < zan then

Do while NOT db.eof

m_name = "社名:" & shamei

db.MoveNext
Loop

Set Objbasp = Server.Createobject("basp21")
rc = Objbasp.Sendmail(m_sv,m_to,m_from,m_title,m_name,"")

end if
Conn.Close
072471904/12/02 12:34:08ID:???
>>723
そんな感じのスクリプトを1時間おきとかに走らすようにスケジュールすればいいと思ふ。
0725nobodyさん04/12/04 18:06:40ID:OgiZkJNR
USER_AGENTを使って、各キャリア毎に別ページにRedirectかけてるのですが、
auの古い機種(A1304T)だとRedirectがききません。
ジャンプ先のURLを直打ちしてやると問題無く表示されます。
最近の機種だと、期待通りの動作をします。

何か良い解決策はありませんでしょうか?

最悪、auだと判明した時点で、「auの方はこちら」と
HTMLでリンクを表示させようと思ってますが、ちょっとそれはカッコ悪いので…。
0726nobodyさん04/12/04 18:25:30ID:???
>725
リダイレクトでなくServer.Transferしてしまうのはどうか。
0727nobodyさん04/12/04 22:40:11ID:???
>>725
リダイレクト時のURLを相対指定じゃなく絶対指定にしても駄目?
0728nobodyさん04/12/05 01:30:19ID:0MhJ+aQV
>>715

昔DBマガジンか何かで読んだけど

ADODB.Command + Parameterオブジェクト
↓
sql文を ADODB.Connection で実行
↓
Recordsetでfieldを入力し、 Update

らしい。
072972804/12/05 01:31:29ID:???
書き忘れてたけど、性能ね。
Commandオブジェクトが一番速いらしい
0730nobodyさん04/12/05 02:18:05ID:???
>729
ストアドプロシージャを使えるならそれが最速だわな。
RecordSet でUpdateは、バッチ更新モードにしたら結構速そうな気がするけどどうなんだろう?
0731こうたろう04/12/08 02:00:58ID:+LYJFTt5
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
</HEAD>
<BODY>
<P>フォームとPHPの連携</P>
<FORM method="POST" action="smp4-01.php">
キーワード <INPUT size="20" type="text" name="keyword">
<BR>
<BR>
<INPUT type="submit" name="exec" value="実行">
<INPUT type="submit" name="cancel" value="キャンセル">
</FORM>
</BODY>
</HTML>
にアクセスしてPHPと文字を入力してsmp4-01.php↓
<?php
print $keyword . "<BR>";
print $exec . "<BR>";
?>
に飛ぶんですけど
Notice: Undefined variable: keyword in C:\Program Files\Apache Group\Apache2\htdocs\smp4-01.php on line 3

Notice: Undefined variable: exec in C:\Program Files\Apache Group\Apache2\htdocs\smp4-01.php on line 4
どうしても↑になるのは何がいけないんでしょうか?宜しくお願いします。
0732nobodyさん04/12/08 02:44:48ID:???
>>731 お前の頭か教科書が古い
0733nobodyさん04/12/08 10:52:16ID:???
そもそもここは(ry
073471504/12/09 11:48:01ID:???
>>728
メモしますた。
全然関係ないと思うけど、レコード件数を数えるのに
ADODBのRecordCountとSQLのCount(*)で時間を比べたらSQLのが確実に早かったです。
0735nobodyさん04/12/09 18:26:25ID:???
>734
Count(主キー列名)にするともっと速いらしいぞ。
0736ASP素人04/12/10 11:17:31ID:Z21oO7ei
データベース使って
ユーザーごとにページ振り分けをASPでしたいんですが、
どのページ参考にすればいいですか?
0737nobodyさん04/12/10 15:35:46ID:eati1ZOZ
質問させて下さい。
JScriptでcookieの有効期限を1時間後に設定したいのですが、上手く動きません。
ソースはこんな感じです。

var d,ti,kigen,d2;
d = new Date();
ti = d.getTime();
kigen = parseInt((ti + 600000),10);
d2 = new Date(kigen);

//クッキーの作成
Response.Cookies('kukki').Expires = d2;

//クッキーの受信
Response.Write(Request.Cookies('kukki'));
Response.End();

クッキーの作成の部分で「型が一致しません」と表示されエラーになってしまいます。
宜しくお願いします。
0738nobodyさん04/12/10 15:51:37ID:???
>>737
http://www5a.biglobe.ne.jp/~n_rieko/asp/9.htm
http://www.ken3.org/cgi-bin/test/test066-2.asp
http://labo.heisei-tech.co.jp/Www/Asp/8.htm
0739nobodyさん04/12/10 18:01:17ID:eati1ZOZ
>738さん
ありがとうございます。
ただ、分単位での期限設定が出来ません。
60分後にクッキー削除したくて、以下の様に記述するとエラーになります。

Response.Cookies("cookie1") = "kuki"
Response.Cookies("cookie1").Expires = 60

2行目の部分を
Response.Cookies("cookie1").Expires = Date+1
というような、1日単位での設定はできてるみたいなのですが。

Cドライブのcookiesフォルダの中に、クッキーが作成されないのも気になります。

あと、できればJScriptでの記述が載っているページも教えて頂けませんか?
VBは慣れてないのでムズカシイです…。
0740nobodyさん04/12/10 19:06:42ID:???
どうして直接60とか設定しようとするんだ?
現在の日付時刻に60分足したらいいだけじゃないのか?
0741nobodyさん04/12/11 12:55:51ID:nhn6UiYD
>740さん
そう思ってJSで、737の様な記述にしたんですが、上手く動かず。
VBでは739の次に
Response.Cookies("cookie1").Expires = Date + Minute(60)
という記述も試してみたのですが、ダメでした…。
VBでもいいので、現在時刻に60分を追加する方法を教えてもらえませんか?
0742nobodyさん04/12/11 13:34:11ID:???
>>740
聞くだけではなく自分で調べる癖をつけましょう。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/vsfctDateAdd.asp
074374204/12/11 13:36:05ID:???
間違った...>>740じゃ無くて>>741な
0744nobodyさん04/12/16 11:41:35ID:???
教えてください。

ASPでExcelを生成・操作するとき
IISが実行されているサーバに
MS-Officeがインストールされている
必要はあるのでしょうか?

0745nobodyさん04/12/16 12:54:00ID:???
ないよ。Excelで保存できるって言ってもHTMLの拡張子をxlsにしたようなもんだから
あまり関係ない。
0746nobodyさん04/12/16 23:26:53ID:???
え?Excelが入ってないとだめだろ。
0747nobodyさん04/12/17 01:04:32ID:???
Server.CreateObject("Excel.Application")てしたいんだったら
多分鯖にExcel入ってないとダメでそ。
0748nobodyさん04/12/17 01:15:37ID:???
>>746
[HOWTO] 書式付きの Excel ブックを作成して MIME コンテンツとしてストリーム配信する方法
http://support.microsoft.com/default.aspx?scid=kb;ja;271572
0749nobodyさん04/12/17 01:51:02ID:I091fOI9
ここ数日以下のことで悩んでます、。

Webサーバ:Win2k IIS5 + ASP(VBScript) (Shift-JISでコーディング)
DBサーバ:Fedora core + PostgreSQL7.4 (UTF-8でTable作成)

環境でASPの勉強をしているのですが、
ADOでデータを取得した場合 文字化けが発生しました。
(DBサーバをEUCにしたら文字化けはしません。)

UTF-8 のデータを扱いたい場合、注意する点等あれば教えてください、、。
075074904/12/17 01:52:28ID:???
UTF-8 で table 作成っておかしいですね、、
create -E UTF-8 データベース名
でDBを作成しました。。
075174504/12/17 10:54:15ID:???
Response.ContentType = "application/vnd.ms-excel"
これ使ってExcel保存する場合は鯖にExcelなくても大丈夫
中途半端な説明でごめん。
ただこれで保存してもソース見るとただのHTMLでXLMじゃないから
注意してねん
■ このスレッドは過去ログ倉庫に格納されています