トップページphp
983コメント364KB

<%= ASP総合 %> Part.4

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/07/03(日) 12:27:28ID:???
レガシASPについて語るスレです。質問や雑談もOK。
何より手軽なので社内イントラであればまだまだ第一線です。
ASP.net については専用スレッドでお願いします。

関連スレ:
【質問】ASP.NETスレ Part2【議論】
http://pc8.2ch.net/test/read.cgi/php/1111480331/

過去スレ:
==ASP== Part 3
http://pc8.2ch.net/test/read.cgi/php/1059401269/
==ASP== Part 2
http://pc2.2ch.net/php/kako/1028/10280/1028024916.html
==ASP==
http://pc.2ch.net/php/kako/984/984840107.html
0202nobodyさん2005/11/10(木) 18:10:20ID:???
【質問】ASP.NETスレ Part2【議論】
http://pc8.2ch.net/test/read.cgi/php/1111480331/
02032012005/11/10(木) 19:15:00ID:???
ありがとう。そっちに逝ってきます
02046682005/11/11(金) 11:39:15ID:CsKh1TLX
リストボックス内のすべての値をRequest.Formにて取得したいのですが、
現状セレクトされている値しか取得できません。
どうすれば、取得することができるのでしょうか?
0205nobodyさん2005/11/11(金) 19:54:32ID:???
>>204
Javascriptのテクニックになるのでスレ違いだが
submitする直前にselect のmultiselectをonにして
全optionをselectedにしてからsubmitすればいい。
02066682005/11/13(日) 11:23:37ID:GnU/8u4f
>>205
ありがとうございます。
やっとできました。
0207nobodyさん2005/11/17(木) 16:29:44ID:???
以下のbatファイルをASP化しようと思っています。

cmd /c net user vaio > I:\temp\test.txt

VBS化のソース↓
Dim WshShell
Dim rtnCode
Const SW_HIDE = 0
Set WshShell = CreateObject("Wscript.Shell")
rtnCode = WshShell.Run("cmd /c net user vaio > I:\temp\test.txt", SW_HIDE, True)
If rtnCode <> 0 Then Error rtnCode
というVBSは成功しました。
でもここからASPにできません。方法ってないですか?
0208nobodyさん2005/11/17(木) 19:58:09ID:???
<%@ Language=VBScript %>
<html>
<head>
</head>
<body>
<%
' 処理がとまってしまう
' DOSコマンドでも同様
Dim WSHShell
Set WSHShell = Server.CreateObject("WScript.Shell")
WSHShell.Run "notepad.exe", 3, false 'メモ帳を起動します。
' Microsoft VBScript 実行時エラー (0x800A01A8)<BR>オブジェクトがありません。: ''<BR>
'Dim WSHShell
'Set WSHShell = WScript.CreateObject("WScript.Shell")
'WSHShell.Run "notepad.exe" 'メモ帳を起動します。
' Microsoft VBScript 実行時エラー (0x800A0046) 書き込みできません。: 'MsgBox'になる
' MsgBox "メモ帳を起動しました。"
%>
</body>
</html>
02092082005/11/17(木) 19:58:44ID:???
考えられる原因は?
0210nobodyさん2005/11/17(木) 20:30:17ID:???
>>209の書き方がちょっとカチンとくるがヒントを出してやるか

>>207-208ともに
ASPのスクリプトがサーバ内でどういう権限で動作するかって所を考えよう

>>207はWMIを使うという選択肢もあるかも。
>>208は…そのページにアクセスするとサーバでメモ帳を立ち上げたいのか?
意味が分からん。
02112082005/11/17(木) 20:41:09ID:???
>>210

ありがとうっございます。
サーバ処理の概念がいまいちわかってないかもしれません。

WMIを検索して勉強してみます。
02122082005/11/17(木) 22:32:37ID:???
うーん。

ASPでCMD処理って敷居高いのかな。。。VBの時はすんなり出来たんだけど。

0213nobodyさん2005/11/17(木) 23:32:08ID:???
>>212
敷居が高いの使い方がまちがっている

まあ、アクセス権限だな
0214nobodyさん2005/11/18(金) 00:17:36ID:???
最強に強まっていいのなら
IWAM_USERをAdministratorsグループにぶち込めば
大抵の事は可能になるが。
0215nobodyさん2005/11/21(月) 17:03:41ID:???
どうしても分からないことがありますので、どなたか教えて下さい。
以下のsampleソースを参考にメール送信フォームを作成したんですが、
CCにて、複数の宛先に送ることができません。(Toは固定アドレスです。)

参考にしたURL:ttp://narita-system.co.jp/sendmails.htm

ASP(VBScript)部分をこんな風にしてみたんですが、objNewMail.Cc = 変数;変数とすると、
読み込みエラーを起こして、表示自体ができなくなります。

objNewMail.Ccに1つの変数のみなら正常に送信できます。

この例でいきますと、objNewMail.Ccにて変数:nameと変数:bossに送りたいのですが、どうすれば良いのでしょうか?
どうか、よろしくお願いします。


<%
Set objNewMail = CreateObject("CDONTS.NewMail")
objNewMail.From = Request("mail")
objNewMail.to = "XXXX@XXX.XXX.XXX"
objNewMail.Cc = Request("name");Request("boss")
objNewMail.Subject = Request("name") & "さんのご意見"
objNewMail.Body = Request("comment")
objNewMail.Send
Set objNewMail = Nothing
%>

お願いします。
0216nobodyさん2005/11/21(月) 17:20:15ID:???
objNewMail.Cc = Request("name") & "," & Request("boss")
やないの?
0217nobodyさん2005/11/21(月) 17:33:40ID:???
>>216
あっさり、できました!!!ありがとうございました!!
感謝します!!!
0218nobodyさん2005/11/24(木) 01:17:36ID:???
DBからデータを取得して、
Office XP Webコンポーネントを使用して、
2軸のグラフを表示したいのですが、

どこか参考になるサイトありませんか?
0219nobodyさん2005/11/24(木) 01:31:43ID:???
>218
[OFF2003] [HOWTO] Office Web コンポーネント (OWC) のプログラミングに役立つ各種情報とサンプル
http://support.microsoft.com/default.aspx?scid=kb;ja;319793
0220nobodyさん2005/11/24(木) 01:39:55ID:???
>218
サーバー側のグラフ作成機能を使用してグラフを動的に生成する方法
http://support.microsoft.com/kb/244049/
0221nobodyさん2005/11/24(木) 10:31:12ID:???
あちこち調べてみましたがわからないので教えていただきたく。

WinServer2003+IIS6.0とOracle10gを組み合わせた
ASPのシステムを作ろうと思っています。

一つ問題がありまして、DB接続認証時にオーバーヘッドが発生しています。

> Set OraSession = CreateObject("OracleInProcServer.XOraSession")
> Set OraData = OraSession.DbOpenDatabase("DB01", "test/test", 0)

上記の処理を走らせるとOpen時に約3秒ほど待たされるのですが
これは解決の方法はあるのでしょうか?

IIS5.0の場合だと一瞬で処理が完了します。何か違いがあるんでしょうか?


02226612005/11/27(日) 10:29:06ID:j0DdBp+E
今、会社でASPの開発でInterDev6.0を使用しているのですが、
左側に行数を表示するできないのでしょうか?
0223nobodyさん2005/11/28(月) 08:01:03ID:???
左側?
0224nobodyさん2005/11/28(月) 23:20:24ID:???
>>222
行番号を表示ってことでしょ?
使ったこと無いから分からんが。
0225バッカーです ◆KeuXjwWDdE 2005/11/29(火) 01:26:36ID:???
インターデブ。あれ、何がいいのか未だにワカラン。
とりあえず行番号なら多分なかったと記憶してるよ。
0226nobodyさん2005/11/29(火) 16:44:32ID:???
InterDevはサーバ側のVBScriptの部分と
クライアント側のJavascriptの部分の両方で
キーワード色分けが出来るのは良かった。
あと現在オープン中の全ファイルからの検索&置換。

とか言いつつも結局今はsakura使ってるがw

まあ少なくともデザインビューは100%使ってなかったな。
0227nobodyさん2005/11/29(火) 20:40:46ID:???
色分けに関してはPeggyシリーズがとても良い
0228nobodyさん2005/11/30(水) 18:15:34ID:???
最近、Perl・PHPからASPをやり始めたんですが、
ASP(VBScript)についてどうしてもわからないことがあります。

フォームからのPOSTデータを Request.Form() で
取得してるんですが、どうやら100KB以上のデータは
Form では受け取れないことに気づきました。
100KB以上のデータをPOSTする際には
どのように取得するのが一般的なんでしょうか?
(例え100K以下のデータを送信する場合でも、100Kの制限がある時点で、Form は使いたくなくなります…)

調べたところ、100K以上のデータを扱う場合には
data = Request.BinaryRead(Request.TotalBytes)
で取得できるとあったんですが、このデータをどう展開していいのかわかりませんでした…。

すみませんがご教示願います。
0229nobodyさん2005/11/30(水) 21:26:15ID:???
まあ普通どんな長文だとしてもブラウザのtextareaに
原稿用紙みっちり埋めて128枚分は書かないからなあ。
あんまり大量のデータだったらファイル添付かな。

Request.BinaryReadで取得したデータはバイト配列なので
基本的にvbscriptではまともには扱えない
(まともじゃないやり方が無いわけではないが)。
VBとかCでDLL作って処理する用だね。
02302282005/11/30(水) 21:34:55ID:???
>>229

レス有難うございます。
なるほど、まともに扱えないんですね…
100KB を意識しつつ Request.Form() を使うことにします。

もう一つ不明点が出てきました。

フォームのチェックボックス(name="checkbox")を受け取った場合、
Request.Form("checkbox")(1) などで要素にアクセスできるので
配列かと思い、 IsArray( Request.Form("checkbox") ) をやったところFALSE が返ってきました。
普通の配列は TRUE が返ってくるんですがこれはそういうものなのでしょうか?
チェックボックスかどうかを判断する材料が無くて困っています。
0231nobodyさん2005/11/30(水) 21:36:29ID:???
>>228
ADO.StreamかBASP21を使って展開するのが常識になってる。

あと、これも忘れずに

Windows 2003+IIS6で200KBを超えるファイルがアップロードできない
http://www.hi-ho.ne.jp/babaq/faq.html#F019
0232nobodyさん2005/11/30(水) 21:37:53ID:???
>>230
VB配列じゃない
0233nobodyさん2005/12/01(木) 03:07:58ID:???
>>230
なんでname="checkbox"なんだよ
適当に分かりやすい名前つければいいじゃんw
02342282005/12/01(木) 12:15:06ID:???
>>231
別のモジュールで対応するんですね。
Win2003での不具合についても情報ありがとうございます

>>232
VB配列なるものが普通の配列って意味でしょうか?
となると普通の配列とそうでないものがあるんですね。。
(というかFormは配列じゃなくてただのオブジェクト??)

>>233
checkbox だよってのを明示的にわかりやすくしただけです。
テストでやっていたので業務ではこんなことしませんよw
0235nobodyさん2005/12/01(木) 20:36:09ID:???
普通の配列で欲しければ
split(Request.Form("checkbox"),", ")
とかでそれっぽいの取れなかったっけかな
0236nobodyさん2005/12/01(木) 20:45:37ID:???
>>234
Formはオブジェクトですな

ちなみに配列についてはVBScript上では
Variantの配列とバイナリ配列というのがあります
Variantの配列がいわゆる普通の配列で、
バイナリ配列は配列というよりただのバイナリデータの塊。
話の流れだとRequest.BinaryRead(Request.TotalBytes)で取得できるのが後者で、
文字列に近いイメージで、ADO.Stream,MidB,AscB,Hexなどを無理やり使えば
ある程度いじることは可能。
0237nobodyさん2005/12/03(土) 00:00:48ID:???
>>234

Request とか Session は ASP Built-In Objects だから扱いが別。
Request.Form("checkbox") は IStringList ってオブジェクトだったと思う。
Count で要素数
Item(n) で各要素 (n >= 1)

フォームで送られてくるデータは name と value の組の単なるテキストだから
checkbox かどうかを判別する方法なんてそもそも存在しないよ。
0238nobodyさん2005/12/03(土) 01:03:29ID:???
>>237
Request.Formはコレクションジャマイカ?
0239nobodyさん2005/12/04(日) 20:53:53ID:???
Request.Form と Request.Form("checkbox") は違う
0240NT4.02005/12/06(火) 15:14:51ID:A31iTPx+
運用してるサーバが、突然、
「HTTP/1.1 新しい Session の作成に失敗しました」というエラーは吐くようになりました
原因わかる方いましたら、お願い致します


0241nobodyさん2005/12/06(火) 15:18:22ID:???
メモリ不足?
一回再起動してみたら?
02422402005/12/06(火) 16:32:32ID:A31iTPx+
すいません
NT4 じゃなくて、2000 Server でした

再起動したら直ったんですけど、
原因不明のままだと、チトまずいんで・・・
0243nobodyさん2005/12/06(火) 17:11:53ID:XSSghKFO
教えてください。
そこそこ閲覧のあるHPを公開したとして、ソースはなるべく短くし、DBとのやりとり(ストアド等)の数を減らしたり
してあげたほうがユーザー側にも、サーバー側にも負担って少ないですよね?
aspx.vbのソース行数を見ると1000行を軽く突破する勢いなんですが、多すぎますか?
ちなみに目標は1日1万ページビューで、SQL-SERVER+XPです
0244nobodyさん2005/12/06(火) 17:48:36ID:???
>>242
セッションが新規作成できないくらいに、メモリ使ってるとか?
メモリを使って開放してないとか?

>>243
そこそこの定義がわからん。
1000行なんてコンマ何秒の処理だろ。
02452432005/12/06(火) 17:50:50ID:???
>>244
わかりにくくて申し訳ないです。
そこそこ=目標は1日1万ページビューです
ちょっと安心しました
0246nobodyさん2005/12/06(火) 17:51:32ID:???
>>243
aspx.vbはスレ違いだが…
まあソースは短いに越したことは無いが、
1000行程度ならそう長い訳でもないだろう。
ASP.netならなおさらクラス定義やなんやかんやでソース上で行数食うしね。

DBとのやり取りも回数を減らすに越したことは無いが、
大抵はそれより「途中で無駄なデータを発生させない」ように
気をつけておいた方がいい。
たとえば20件ごとに表示するのに、データ全行取り出して
要らない部分を空読みしてスキップ、
というようなことをやるとデータが増えるにしたがってたちまち重くなる。
0247nobodyさん2005/12/06(火) 19:00:09ID:???
ソースが短いからといって負荷が軽いとは言えない。
0248nobodyさん2005/12/06(火) 21:58:25ID:???
asp.netってコンパイルするんでしょ?
じゃぁ1000行なんて余裕でしょ。

多少長くても、定義やセッションの切断とかを明確に書いた方が早いことが多いよ。
0249nobodyさん2005/12/07(水) 00:47:24ID:???
>>248
実はレガシASPも実行時はコンパイルされてるぢょ
0250nobodyさん2005/12/07(水) 11:04:22ID:Q9Fd97MO
a = Split(b, ",")
nCnt = 0

' EOFまでループ
Do Until OnjRS.EOF

 ' DBからの値を格納
 hoge = NVL(ObjRS.Fields("hoge_id").Value, 0)
 
 ' 配列aのnCnt番目の値が、DBからの値と同じ時だけ、cに代入
 If a(nCnt) = hoge Then
  c = "ifの中"
 End If

 OnjRS.MoveNext

Loop

a(nCnt)部分でエラーが出ます。
過去ログなどから、UBoundで配列の最大要素番号を指定してから出ないと
エラーになることはわかったのですが、
実際、どのように書いたらいいのかわかりません…。
02512502005/12/07(水) 11:36:40ID:???
解決しますたm(__)m
激しく勘違いを…(((;゚Д゚))) ガクガクブルブル…
02522282005/12/07(水) 17:23:06ID:???
すみません、レス遅れました…

>>235
カンマ区切りの文字列を分解して配列にするイメージっすね。
チェックボックスがチェックされていなかったり、
一箇所のみチェックだったりしても split はエラーを返さないんですね

>>236
なるほど、やっぱり二種類あるんですね…
いまいち二種類を使い分ける方法がよくわかってません。
恐らくその種類によって使えるメソッドも変わるんでしょうね…

>>237
checkbox かの判断の意図は、
チェックボックスかがすぐわかれば、それでループかけて
どこがチェックされてるか調べることができるのかなと。
(PHPでは連想配列で入ってくれてたので、キーの指定だけで判断できました)
みなさんはどうされてるんですかね??
(というか普通はどうするものなんだろう…)

何か簡単なフォームASPのサンプルって転がってないですかねぇ…
VBScriptがなかなかなじまない…
02532282005/12/07(水) 17:34:56ID:???
結局のところ、フォームからのクエリを処理するために、
Request.Form の値を、
Set Query = CreateObject("Scripting.Dictionary")
とした連想配列(オブジェクト?)Queryにコピーしてから処理してます。

一般的にクエリを取得する場合は、Request.Form の 100KBの壁は無視されるのでしょうか?
それとも、ADO.Stream か BASP21 のようなツールを使って
Request.BinaryRead(Request.TotalBytes) からちゃんととるのでしょうか?

それと、ASPで連想配列を使いたい場合は、
Set Query = CreateObject("Scripting.Dictionary")
が一般的でしょうか?
また、連想配列の連想配列の場合は、
-----
Dim a1, a2
Set a1 = CreateObject("Scripting.Dictionary")
Set a2 = CreateObject("Scripting.Dictionary")
a2.add "key", "value"
a1.add "key", a2
Response.Write( a1.item("key").item("key") & "<hr>")
-----
な感じでやっています。
(変なことしてないかな…

すみません、ご指摘いただければと思います。
0254nobodyさん2005/12/07(水) 19:51:07ID:+pnCfHBy
流れをぶった切ってADSIの質問をさせください。

ASPでユーザー認証を行うため、以下のプログラムを作成しました。
環境はWin2003サーバーとFreeBSD+Samba3.0+OpenLDAPで、
ドメインに信頼関係を持たせています。
以下のプログラムはSambaの握っているOpenLDAPを覗きに行っています。

strPath = "LDAP://xxx.xxx.xxx.xxx/ou=AAA,dc=BBB,dc=CCC"
strUser = "ユーザー名"
strPassword = "パスワード"

Set objDSO = GetObject("LDAP:")
Set objUser = objDSO.OpenDSObject( strPath, strUser, strPassword, 1)

どこをどう変えても動きやがりません。エラー '80072032'とのたまいます。

また、普通に
Set user = GetObject("LDAP://〜〜適当に〜")
としてuser(sambaSamAccount型)を取得した場合に

name = user.Get( "cn" )

とするとユーザー名が取れるくせに、

pass = user.Get( "sambaNTPassword" )

とするとエラー '8000500c'
ディレクトリのデータ型と、ネイティブ DS のデータ型を相互に変換することはできません
とのたまいやがります。

どなたか同じようなことで悩んだ方、よろしくおねがいしやすm(__)m
0255nobodyさん2005/12/07(水) 22:18:10ID:???
>>228
複数のcheckboxがある場合はASPでは>>235みたいにするのが普通だと思う。
splitの後にisArrayで配列になったかのチェックをすればいい。

それと、おせっかいだとは思うが
Dictionaryは確かに便利だがその使い方は無駄だと思う。
Dictionaryを入れ子にしたりして美しくデータを確保してる余裕があったら
さっさとResponse.Writeしていくべき。
基本的にWebプログラムの振る舞いの一般論として
一つのスレッドで大量のメモリを確保するような設計は推奨されない。

それと100KBの壁にずいぶんこだわっているようだが
一体どんな使い方をしようとしているのか?
普通に使っていて一つのinputで100KBに達することは
まず無いと思うのだが。

>>254
cn=ユーザ名, を加えればいいんじゃない
0256228=252=2532005/12/08(木) 00:07:26ID:???
>>255

ご指摘ありがとうございます。
Split の後に isArray、参考になります。

PHP,Perl-CGI で書く時は、フォームのチェックボックス名の
連想配列を作って、そのキーがあるかないかで判断していたので
ASPでも同じ手法でやろうとしてました。

Dictionary等でデータの格納方法に気を使うよりは
素直にprintしてくって指摘も一理ありですね。。

また、100KB についてですが、確かにファイルアップが無ければ
滅多に超える容量ではないとは思うんですが、100KB の制限が
あるものを使うのも設計上どうかと思ってます。
どのようなフォームでも大丈夫なように、制限の無いものがあるのであれば、
あらかじめそれを使いたいってのが本心です。
でも実際のところはどうなのかな?と疑問に思ってました。
別のモジュールが必要だったり、制限があっても気にしないのが
ASPとして一般的であれば、それに越したことは無いので。。
0257nobodyさん2005/12/08(木) 21:04:01ID:???
BASPのFormメソッド使うやり方だと
100KBの壁を超えられるのかも・・・?

バグが無ければだけどナー
0258nobodyさん2005/12/09(金) 19:40:03ID:???
ASPのフォームでメールアドレスを入力させるときに
ドメインがちゃんと存在するかをチェックしたいと思っています。
VBScriptにMXレコードを見るなどのモジュールは存在しますか?
0259nobodyさん2005/12/09(金) 21:28:20ID:???
>>258
あるべ。VBScriptにはないけど。
0260nobodyさん2005/12/09(金) 22:28:32ID:???
標準で頑張るには裏でWScript.Shell使ってnslookupを実行する、
とかになるのかな?
02612582005/12/12(月) 15:52:11ID:???
>>260
ありがとうございます。
標準ではnslookupからひくしかないんですね。
戻り値の判断が非常にむずかしそう…
>>259
VBScriptではきついってことでしょうか?
何か方法があれば教えていただけると助かります
0262nobodyさん2005/12/13(火) 06:38:36ID:???
>>261
VBScriptにはネットワークにアクセスするメソッドがないからね

BASP使ってSocketで何とかするか…
またはVBでDLL作っちゃっても良さそうだけどね
0263nobodyさん2005/12/13(火) 21:54:09ID:???
>>261
DNSから引くって考えるより、実際にメールを送信してみた方が早いかも。
ドメインがなければサーバエラーを受け取れるし。
0264nobodyさん2005/12/16(金) 14:00:18ID:ys2aEO8I
初歩的な質問かもしれませんが

フォームで価格を送信して貰う→数字以外の値が入力されていた場合、エラー表示
ができません。

TypeName関数では無理だったのですが分かる方いたら教えて下さい。
0265nobodyさん2005/12/16(金) 18:50:57ID:???
>>264
isNumeric
0266nobodyさん2005/12/16(金) 19:57:23ID:???
>>264
isNaN
0267nobodyさん2005/12/17(土) 02:17:00ID:???
>>265-266
できました
本当にありがとう

0268nobodyさん2005/12/24(土) 16:15:38ID:???
特殊文字「"#$%&'()」のような文字を弾く(エスケープ)するには、
HTMLEncodeを使用する以外の方法はあるんでしょうか?
0269nobodyさん2005/12/24(土) 18:06:46ID:???
>>268
つString型
0270nobodyさん2005/12/24(土) 20:17:32ID:???
>>268
そういう特殊文字をどうしたいの?
textboxとかに入力されたそういう文字を何とかしたいのか、
そういう文字を画面に出したいのか、
querystringで渡すときにおかしくならないようにしたいのか、
input type=textの初期値として設定したいのか。
「特殊文字を弾く」なんていう日本語では何をしたいのか全く通じない。

>>269
VBScriptにそんな型なんかねえよ
0271nobodyさん2005/12/24(土) 21:47:32ID:???
>270
まぁまぁ。
TypeName("aaa")は"String"を返してくるんだし。
0272nobodyさん2005/12/25(日) 02:25:45ID:???
>>270
君のような融通のきかない馬鹿はエンジニアとして失格。
0273nobodyさん2005/12/25(日) 07:52:31ID:???
>>272みたいに融通を利かせてしまう奴が
東証のシステムみたいなのを作ってしまうんだろうな。
0274nobodyさん2005/12/25(日) 11:42:36ID:???
>>273
なるほど。>>270が融通のきかない馬鹿な使えないエンジニアであることは
認めるわけですな。ご苦労さん。
0275nobodyさん2005/12/25(日) 11:44:05ID:???
>>273
え? 東証のシステムのどこがおかしいの?
おかしいのは周辺の人間であってシステム自体は至極まっとうなもの。

やっぱお前だめだよ。まともなシステムに関わったことないんだね。
カワイソス
0276nobodyさん2005/12/25(日) 18:50:40ID:???
なんか香ばしくなってきてるな。

>>270の指摘は、言葉はくどくて感じ悪いが言っている事は至極真っ当だと思う。
>「"#$%&'()」のような文字
って、確かにどれもアルファベットや数字の類ではないけど
それらを十把一絡げに「特殊文字」と呼んで「弾く(エスケープ)」
と言われても何についてのことだか分からない…。
02772762005/12/25(日) 18:57:56ID:???
なんか傍から見てると
>>270=言葉遣いがきつく対人能力は低そうだが仕事は細かい使えるPG
>>272=大雑把な雰囲気だけ指図して満足、
     その後PGから指示漏れを指摘されると逆切れして相手を馬鹿扱い…
     という使えないSE
みたいに見えるんだけどw

しかも
>>274 11:42:36
>>275 11:44:05
これ明らかに>>272の自演だろw
0278nobodyさん2005/12/25(日) 23:10:43ID:???
>>277
いや、自作自演じゃないよ。自作自演つうのは自作自演だと
ばれないようにやるのが自作自演なわけで。しかも>>275>>274
対するレスでもないし。

やっぱ馬鹿の集まりってのは一味違うねぇ。
0279nobodyさん2005/12/25(日) 23:24:07ID:???
この板も早く強制ID制になってほしいものだ
0280nobodyさん2005/12/25(日) 23:45:05ID:???
>278
バレバレの自作自演なんて数えられないくらい存在する
今回のも非常に分かりやすいな

>>272=>>274=>>275=>>278
0281nobodyさん2005/12/26(月) 22:51:19ID:???
そういえばここって強制IDじゃないんだよね。
さすが過疎板の代名詞
0282nobodyさん2005/12/29(木) 14:08:54ID:W4CzIrpP
お初で失礼します。
PHPプログラマですが既存のシステムを大人の事情でASP5.0 on IIS5.0への移行を行うことになりました。

だいたい言語仕様やアーキテクチャの仕様を調べたのですが
一つ大きな問題に直面してしまいました。
ASPsessionIDをクッキーでなく、自動でform内にhiddenで埋め込むことはできるのでしょうか?
(GETで?の後につけてはいけない)
クッキーoffでもセッションを使えるようにしなければならないというのが当初からの命題の一つなのです
0283nobodyさん2005/12/29(木) 17:35:44ID:BZLcPqC6
>>282
普通にできる
hiddenで埋め込んだ値をPOST送信 か Session 変数を使えばOk
0284nobodyさん2005/12/29(木) 21:03:25ID:???
>282 ちなみに ASP3.0 な
0285nobodyさん2005/12/29(木) 22:37:15ID:???
ん?
Session変数はクッキーで渡されたIDをキーにサーバの値を使うものだから
クッキーレスでは使えないぞ。

それをやるとしたら…うーん。
DB使うか、ApplicationにFreeThreadedDom突っ込んで
そこにデータを出し入れするかかな。

でも実のところHiddenの防御力はCookie以下だということは
認識しておいた方がいいかと。
書き換える気になればquerystringを書き換えるのと大して変わらないので。
0286nobodyさん2005/12/30(金) 01:45:46ID:???
>>285
確かに純粋にはくクッキーの一つだけど
でもIEのクッキー設定を無視するからクッキーoff環境でも問題ないよ
0287nobodyさん2005/12/30(金) 03:26:10ID:???
IEならどうにでもなるんだけどね…
クッキーレスを要求するっていうことはすなわち
それ以外のブラウザでも使えるようにって要件ではないかと思われる
0288nobodyさん2006/01/01(日) 19:02:30ID:Vw/N6o5Y
ディレクトリ再帰検索の降順表示について質問します。

<やりたいこと>
@特定のディレクトリの下位階層を無制限に再帰検索して展開表示
Aボタンで判別して最上位ディレクトリのみ表示か、すべて再帰的に展開表示するか選択
B表示されたディレクトリに対してonClickで開閉することが可能
Cソート機能(ディレクトリ名降順表示)

@〜BについてはソースAで動作しますが、Cで四苦八苦しています。
ディレクトリ名の降順表示はソースBの仕組みを使ったり、BASP21のソート機能等も検討しましたが、
問題は入れ子のものを展開していくなかで、途中上位のディレクトリに戻るので
動的配列を使っても展開中で再定義するとおかしくなってしまいます。
ちなみにリアルタイム性と速度を求められるので、テキストやDB格納は現段階では考えておりません。

どなたかアドバイスお願いします。
0289nobodyさん2006/01/01(日) 19:04:32ID:Vw/N6o5Y
<ソースA>
<%

strPwd = Server.Mappath("./")
BTN = Request.Form("BTN")
x = 0

If BTN = "開く" Then
BTN = "閉じる"
strCatDisp = "display:block;"
Else
BTN = "開く"
strCatDisp = "display:none;"
End If

%>

<script language=JavaScript>
function ClickShow(catid){
if(document.getElementById){
if(document.getElementById(catid).style.display == 'block'){
document.getElementById(catid).style.display = 'none';
} else {
document.getElementById(catid).style.display = 'block';
}
}
}
</script>
<form method=POST>
<input type=submit name=BTN value='<%=BTN %>' class=submit>
</form>
0290nobodyさん2006/01/01(日) 19:06:01ID:Vw/N6o5Y
<%

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Call DirSearch(strPwd)

'ディレクトリ検索
Sub DirSearch(TmpDir)
Set objDir = objFSO.GetFolder(TmpDir)
Set objSubDir = objDir.SubFolders
x = x + 1
For Each objSD In objSubDir
Response.Write "<span style='cursor:hand' onClick=ClickShow('cat" & x & "')>" & vbCRLF
Response.Write objSD.Name & vbCRLF
Response.Write "</span>" & vbCRLF
Response.Write "<br>" & vbCRLF
Response.Write "<div id=cat" & x & " style='" & strCatDisp & "'>" & vbCRLF
Call DirSearch(TmpDir & "\" & objSD.Name)
Response.Write "</div>" & vbCRLF
Next
End Sub

Set objSubDir = Nothing
Set objDir = Nothing
Set objFSO = Nothing
%>
0291nobodyさん2006/01/01(日) 19:06:50ID:Vw/N6o5Y
<ソースB>

<%

Dim strFile()
Set Fs = Server.CreateObject("Scripting.FileSystemObject")
Set objFiles=Fs.GetFolder("C:\winnt\system32").Files
ReDim strFile(objFiles.Count-1)
For Each objFile In objFiles
tmp0=objFile.Path
For J=I-1 To 0 Step -1
If tmp0 < strFile(J) Then
Exit For
Else
strFile(J+1)=strFile(J)
End If
Next
strFile(J+1)=tmp0
I=I+1
Next

For I=0 To objFiles.Count-1
Response.Write strFile(I) & "<BR>"
Next

%>
02922882006/01/01(日) 19:09:55ID:Vw/N6o5Y
忠実に再現しようと思ったら、長くなってしまいました・・・orz
長文失礼しました。よろしくお願いします。
0293nobodyさん2006/01/01(日) 22:50:12ID:???
>>288
速さのためって言ってるけど。
毎回全フォルダ情報をクライアントに送りつけるっていうのは
フォルダ階層の数によるがかなり重くなると思う。

俺は子への展開時にAjax使って取り直し、みたいな形で実装したことがある。

そうしないとしたら、再帰関数内で
@フォルダ内の全子フォルダを関数内の局所配列に取得
  (ソートするならその時に)
Aその配列からフォルダ名を順に取り出し、DIVを表示して再帰
とすれば大枠変えずに出来るんじゃないか。

ちなみに
>>問題は入れ子のものを展開していくなかで、途中上位のディレクトリに戻るので
>>動的配列を使っても展開中で再定義するとおかしくなってしまいます。
動的配列の再定義を繰り返すとか文字列の追加追加っていうのは
VBScript on ASPでは禁止事項。
そうやってでっち上げると忘れた頃にパフォーマンス劣化の原因になる。
VBScript上の変数にバッファリングしようとは思わないこと。
生成したデータを片っ端から表示していけるようなアルゴリズムにするのが原則。
02942882006/01/02(月) 20:27:19ID:N1rmW7hx
>>293
アドバイス有難うございます。

>>そうしないとしたら、再帰関数内で
>>@フォルダ内の全子フォルダを関数内の局所配列に取得
>>  (ソートするならその時に)
>>Aその配列からフォルダ名を順に取り出し、DIVを表示して再帰
>>とすれば大枠変えずに出来るんじゃないか。
@は再帰的に格納するということでしょうか?
再帰するのはDIV表示が終わってからではなく、表示させる前段階で再帰処理する必要があります。
だからといってソートしている最中に再帰する方法だと動的配列の再定義をせざるを得ません。
(が、うまくいきません)

>>俺は子への展開時にAjax使って取り直し、みたいな形で実装したことがある。
クリック時のフォルダ展開は言い忘れてしまいましたが、画面遷移しないという要件なので、
確かにAjaxが適していると思います。XMLHttpRequestで試してみます。ヒント有難うございました。
0295nobodyさん2006/01/03(火) 16:07:07ID:???
>>294
>>@は再帰的に格納するということでしょうか?

いや、そうじゃなくて単階層。
再帰関数の引数は妥当な線だとあるフォルダのパスでしょ?
関数の流れをざっと書くと
1.まずそのフォルダの子フォルダ一覧を配列に取得する。
2.必要があるならソートする。
3.親フォルダのDIV開始タグを書く。
4.そしてfor〜nextで子フォルダ配列をなめながら再帰。
5.親フォルダのDIV終了タグを書く。

こんな感じでやりたいことが出来るのでは?ということ。
0296nobodyさん2006/01/04(水) 13:03:07ID:O9dUywF6
大量のデータを1ページに50件ずつ1行ずつ表示させる時って、
みなさんはどうしてますか?
今のところ、全データをとりあえず取得して、
Doループで回してるのですが、
どうも負荷が大きすぎて…。

DBの方での質問なのかなとも思ったのですが、
とりあえず。

よろしくお願いします。
0297nobodyさん2006/01/04(水) 13:36:35ID:???
>>296
漏れはこんな感じでやってる(実際はもっと細かいチェックがいろいろと)
他にもっといい方法無い?
Dim conn, rs
Dim CurrentPage, i
Const DefaultPageSize = 50
CurrentPage = Request("P")
If CurrentPage = "" Then
 CurrentPage = 1
ElseIf IsNumeric(CurrentPage) = False Then
 CurrentPage = 1
Else
 CurrentPage = CLng(CurrentPage)
End If
Set conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorType = adOpenKeyset
rs.LockType = adLockReadOnly
(厨略)
conn.Open
rs.PageSize = DefaultPageSize
rs.AbsolutePage = CurrentPage
rs.Open
Do Until rs.EOF Or i > DefaultPageSize
 Response.Write(rs.Fields(0).Value)
 Response.Write("<br>")
 i = i + 1
Loop
rs.Close
conn.Close
Set conn = Nothing
Set rs = Nothing
0298nobodyさん2006/01/04(水) 22:17:29ID:???
DBがPostgreSQLだったらOFFSETとLIMITを使えば簡単。
SQLServerでも取得するデータ列にユニークなキーがあれば
TOPとnot existsを駆使することで、結構負荷軽めに
レコードセットの中間だけ取り出す事が可能だよ
0299nobodyさん2006/01/05(木) 12:18:06ID:???
なるほど。
0300nobodyさん2006/01/05(木) 16:56:41ID:KdflC/KD
VBScriptで、自分のPC(Win2000)をサーバーにして作業をしています。(この書き方おかしかったらすみません。)

Excelの既存ファイルを開き、データ書き込み、別名で保存ということをしています。
その時、作業フォルダとは別に、Cの直下に、作業フォルダ、開いたファイル、保存したファイルの3つのショートカットができるんですけど、なぜなんでしょうか?仕様ですか?
0301nobodyさん2006/01/05(木) 18:09:35ID:???
>>300
そんなショートカット出来たこと無いぞ
■ このスレッドは過去ログ倉庫に格納されています