<%= ASP総合 %> Part.4at PHP
<%= ASP総合 %> Part.4 - 暇つぶし2ch2:nobodyさん
05/07/03 13:09:24


3:nobodyさん
05/07/03 15:18:57
ASP@IIS6 でのUnicode対応についてご質問です。

最近まで日本語Onlyで稼動していたシステムに中国語での入力が加わることになり、
Unicode対応を進めております。
中国に設置したWindows2003Server中国語版でのテストでは、
全ソースの文字コードをUTF-8に変換 & Codepage=65001を指定
上記2点の対応で、日本語(半角カナ含む)、中国語(簡体字)の入力、DBへのデータ登録が可能となり
安心していたのですが、
日本側でテストを行ったところ、ブラウザから送信されたデータをサーバーが受け取った時点
(Request.Formメソッドで文字列を取得した時点)で簡体字が化けて(該当文字コードが見つからず’?’に置換される)
しまいます。
状況を確認したところ
・Requestオブジェクトへはデータが正しく送信されている
・Request.Fromメソッドで文字列を取得する際に化けている

これはIISの設定や、ASP側での何らかの対応によって回避できるものなのでしょうか?



4:nobodyさん
05/07/04 10:29:15
>>3


5:4
05/07/04 10:32:11
>>3
スマソ。途中で送信してしまった。

Response.Charset = "UTF-8"
Session.CodePage = 65001
もきちんと記述。

ブラウザからはUTF-8で送信してもらう。

これでもダメ?

6:nobodyさん
05/07/04 14:31:38 AwbPzfS8
>>1
乙。
確かに、社内用なら効率も稼動数もASPが一位だろうな。

7:3
05/07/04 21:40:17
>>5
書くのわすれてました。
Response.CharSet="UTF-8"と
Session.Codepage=65001も付けてます。
RequestオブジェクトへはUTF-8で送信されてきている模様なんですが
(デバッガでとめて中身みると1文字が3バイトで送信されてました)
Request.Formメソッドを通って変数へ値をほりこむと?に変換されてしまっています。
中国語環境で試したときは、それまで扱えなかった半角カナが扱えるようになったので、
日本語環境でも同じようにすれば簡体字を扱えるようになるかなとおもったのですが・・・

8:nobodyさん
05/07/04 23:41:52
>>7
中国語とUnicodeってやったことないから
適当なことしか言えないんだけど、
すべての文字がだめなの?
日本語も?
あとQueryStringだとどう?

9:3
05/07/05 00:28:35
>>8
すべての文字がってわけではなく、
日本語はOKで簡体字が?に置換されてます。
感じとしてはSJISで定義されてない文字が化けてるのかな?と
ソース上で出きるCodePageの指定はやってますし、
Request.Formメソッドで変換に失敗してるっぽいのでIISの設定とかなのかなぁと(´・ω・`)
Queryでも同じ結果です。
Requestオブジェクト内にはエンコードされたコードが入ってて(Formと同じコードです)
Request.QueryStringメソッドで取り出すと?に・・・
RequestのメソッドがUTF-8に対応してないとかなのかなぁ・・・

10:nobodyさん
05/07/05 02:26:01
(Linux or FreeBSD or Solaeis or MaxOSX)+Apache+(Perl-CGI or PHP or JSP+Tomcat)
の環境に変更してみてはどうか?

11:nobodyさん
05/07/05 21:38:11 pwY9dvvb
>>9
SP1?

12:nobodyさん
05/07/05 23:15:26
>10
このスレ的にはせめて
Apache+Perl+Apache::ASP
ジャマイカ

13:nobodyさん
05/07/06 05:49:35
>・Requestオブジェクトへはデータが正しく送信されている
の中身と

>・Request.Fromメソッドで文字列を取得する際に化けている
の中身が知りたいなぁ。

IEからのリクエストはUTF-8で送ってるんだよね?
@CodePage=65001 なんだよね?
Request.QueryString で取れそうなもんだが。。。

14:nobodyさん
05/07/24 08:44:24
BASPでメール受信してる香具師っている?

15:nobodyさん
05/07/24 21:09:23 fn1pPtpi
>>14
昔コレ使ってWebMail作ったことがある。

16:nobodyさん
05/07/25 11:49:09
>>14 FTPとか、画像関連は使っているけどメールはないなあ。

17:nobodyさん
05/07/25 13:51:39
>>14
漏れは使ってないけどこんなの使ってる奴が知り合いにいる。
URLリンク(homepage2.nifty.com)

18:nobodyさん
05/07/25 19:59:54 YXDkZe5L
>>17
この作者もそうだけど、ADOからmdb扱うのにODBC経由しないといけないと思ってるヤツ
どうにかならないのだろうか?

19:nobodyさん
05/07/25 21:37:32
俺仕事で使ってたんだけど、メールを取り込むメソッドに
仕様漏れとかバグとか多すぎね?

凹んだ仲間はいませんか。

20:15
05/07/25 22:09:57
>>19
ノシ

21:nobodyさん
05/07/25 23:02:48
>18
漏れが今売られてる先の既存レガシASP
SQL Server2000相手にADOで繋ぐのにわざわざODBC噛ましてる奴ばっかしorz

22:nobodyさん
05/07/26 20:41:09 M6o38FgU
セッション数を取得する方法ってありますか?
今何人ログオンしているか知りたいんですけど。


23:15
05/07/26 22:14:07
>>22
Session_On_Start
Session_On_End
にApplication変数入れれば良い。
たまにおかしくなるけど

24:15
05/07/26 22:16:07
>>22
Session_On_Start
Session_On_End
にApplication変数入れれば良い。
たまにおかしくなるけど

25:15
05/07/26 22:17:15
>>22
Session_On_Start
Session_On_End
でApplication変数を+1、-1すれば良い。


26:nobodyさん
05/07/26 22:18:45
>>22
Session_On_Start
Session_On_End
でApplication変数を+1、-1すれば良い。


27:nobodyさん
05/07/26 22:21:51
>>22
Session_On_Start
Session_On_End
でApplication変数を+1、-1すれば良い。


28:nobodyさん
05/07/26 22:45:27
。゚(゚´Д`゚)゜。ウァァァン
連投スマソ
Janeがおかしい

29:nobodyさん
05/07/28 22:38:18
>>21
Microsoft データリンク(拡張子=udl)で、
Microsoft OLE DB Provider for SQL Server というのを使用していますが、
これは正解ですか?

30:nobodyさん
05/07/28 22:56:45 6dRpupV3
グラフの表示について教えてください。
ASPを使ってSQLServerに接続しデータを取得して
その結果をグラフで表示したいと思います。
そんなこと(動的にグラフ作成)をやるには
どうしたら良いのでしょうか?

31:21
05/07/28 23:16:19
>29
少なくとも、ODBC経由ではない。
そして漏れ的には正解と思うっす。

32:nobodyさん
05/07/29 00:54:25
>30
とりあえずDoodleでごりごり描くとか? 高負荷での使用はお勧めしないらしいけど。
URLリンク(www.vector.co.jp)
商用のチャートコンポーネントは沢山あるが、オフスクリーンで描けるかどうかよくワカランのが多いなぁ

33:nobodyさん
05/07/29 10:16:34 vFMET1j+
すみません。教えてください。

ADO接続したOracleのストアドパッケージのプロシージャを実行するのはどうすればいいのでしょうか。
引数、戻り値共ありません。実行するのみです。

ある書式でCommandTextを指定するだけなのでしょうか。
oo4oでしか出来ないなんてことも聞いた(見た)事があるのですが、
果たして出来るのかどうかも分からないのです。

環境:
Windows Server 2003
IIS6.0
Oracle 10g
IE 6.0

34:33
05/07/29 10:19:00 vFMET1j+
33です。
書き忘れてましたが、ASPでの開発です。
ScriptはVBScriptです。
お願いしますm(_ _)m

35:nobodyさん
05/07/29 22:01:28
>>30
棒グラフなら簡単にできるよ

36:nobodyさん
05/07/30 00:17:06
Flashでグラフ書くとか。あとはExcelを生成するとか。

37:nobodyさん
05/07/30 00:17:51
ストアドプロシージャなら、ADODB.Commandオブジェクトで実行できるんじゃね?
Oracleは使った事がないからわからんけど。

38:nobodyさん
05/07/30 21:32:49
>>30 Flashが作るのも簡単だし、負荷もやさしいな。

39:nobodyさん
05/07/30 22:48:19
イントラとかならOffice Web Componentsを使う手もあるな

40:nobodyさん
05/07/31 00:10:17
>>30
もしブラウザ側でプラグインを必要とするのが嫌っていうんだったらVMLオススメ。
案外楽。
難点といえばドキュメントの類があまり無いってところかw

41:nobodyさん
05/07/31 19:21:59
>>31
レスども!さんくす。

42:take
05/08/03 01:33:59 3G0F5eI3
はじめまして。現在iモード用のページを作成しています。
言語はASP(JScript)を選択しました。

<SCRIPT LANGUAGE=JScript RUNAT=Server>
var out = "";
out += "<HTML>";
out += " <HEAD>";
out += " <TITLE>TEST</TITLE>";
out += " </HEAD>";
out += " <body>";
out += " <a href='./scr/test1.asp'>テスト1</a>";
out += " <br>";
out += " <a href='./scr/test2.asp'>テスト2</a>";
out += " </body>";
out += "</HTML>";
Response.Write(out);
</SCRIPT>

上記のようなソースを作成して携帯からアクセスしたところ、
認証タイプに未対応です(401)と表示されてしまいます。
↑このメッセージの意味も不明なのですが…

JavaScriptだけではなく、JScriptもやっぱりiモードでは実行不可能でしょうか?
因みに、VBScriptは表示できました。


43:nobodyさん
05/08/03 21:06:59
>>42
ちゃんとサーバ内で実行されていれば
JScriptだろうがVBScriptだろうが関係ないだろ。

<SCRIPT runat=>じゃなくて
普通に<% %>で囲んでやってみたら?

44:43
05/08/03 21:08:10
ちなみにその場合はIISの設定でサーバ側の言語をJScriptにする必要がありマンモス

45:nobodyさん
05/08/03 23:18:21
メッセージのとおりiモードが未対応な認証で保護されてんじゃねーのかい。そのページが。
ってもどんな認証なのかはしらんけども。
なんかそのページがおいてあるディレクトリに基本認証が設定されてるとかさ。
でも、VBScriptと同じ場所にJScriptのソースを置いてあるならそれはないのか。

46:take
05/08/04 00:28:00 rNW1W7Vo
アドバイスありがとうございました!試してみましたm(__)m
しかし、どうやらソースの問題ではなくIISの設定の問題のようです。
理由として・・・

・既存のWEBサイトは2つ用意しているんですが、もう片方のサイトの方にASPを置いたところ表示できました。
・iモードからでなく、PCから接続しようとした際に、以下のように表示される。
 --------------
 このページを表示する権限がありません
 HTTP エラー 401.5 - 権限がありません : ISAPI または CGI アプリケーションによって、認証が失敗しました。
 --------------

プロパティで両WEBサイトの設定の違いを見てはいるのですが、どうもどちらも同じようです…(泣)

47:nobodyさん
05/08/04 01:50:34
>>46
そのエラーはNTFSのACLに引っかかってる場合が多い。


48:nobodyさん
05/08/04 07:14:06
aspファイルの権限も確認してみたら?

49:nobodyさん
05/08/06 01:14:40 qxFS+q97
グラフツールの業界標準ソフトって何ですか?

50:nobodyさん
05/08/06 07:55:05
マジレスするとExcel

51:nobodyさん
05/08/06 12:23:15
IPアドレスの文字列"192.168.0.1"などを
10進数の数値に変換したいのですが何かよい関数はありますか?
もちろん自作することは可能ですが既にあるなら利用したいのです。
よろしくお願いします。

52:nobodyさん
05/08/06 18:53:49
安直にやってみる。エラーチェック無し。

 ary = split( txtIP , ".")
 valIP = ary(0)*(256^3) + ary(1)*(256^2) + ary(2)*256 + ary(3)

まあ大抵はreplace(txtIP , "." , "")とかでも十分そうだがな

53:nobodyさん
05/08/06 19:06:15
>>52
ありがとん。

>まあ大抵はreplace(txtIP , "." , "")とかでも十分そうだがな

これはどういう意味ですか?




54:nobodyさん
05/08/06 21:58:30
>>53
だがそれだと例えば
192.168.1.111
192.168.11.11
192.168.111.1
が全部同じ1921681111になってしまうからダメだよな。

つかそれって下手するとlong型で扱えない罠がありそうだ。

55:nobodyさん
05/08/07 01:31:56
>>51
単に数字を三桁にすれば良いのでは?
192.168.0.1

192168000001

56:nobodyさん
05/08/07 14:22:24
>>55
わざわざ3桁に文字列加工するんだったら
>>52のやり方の方がスマートに見える

57:nobodyさん
05/08/07 15:33:32
>>55
ああ、その手があるね。
DBとかに詰め込んだりしてリスト表示したり、デコードのことを考えると>>53より>>55の方がいいかもね

58:51
05/08/07 21:32:03
ary = split( txtIP , ".")
valIP = ary(0)*(256^3) + ary(1)*(256^2) + ary(2)*256 + ary(3)

以外はネタだと思ってましたがw

59:nobodyさん
05/08/10 14:21:41 SGllzMlg
>DBとかに詰め込んだりしてリスト表示したり、デコードのことを考えると>>53より>>55の方がいいかもね
それでも桁揃えするメリットが分からない私はバカ?

60:nobodyさん
05/08/10 19:20:51
> valIP = ary(0)*(256^3) + ary(1)*(256^2) + ary(2)*256 + ary(3)
ってどうやって元に戻せばいいんですか?

61:51
05/08/10 22:30:15
工エエェェ(´д`)ェェエエ工工

62:52
05/08/10 22:55:41
>>60
dim ary(3)
for i = 3 to 0 step -1
ary(i) = valIP mod 256
valIP = valIP \ 256
next
strIP = join(ary,".")


63:57
05/08/10 23:50:26
>>59
ログファイルとかでIP保存するときは
桁が揃った方が出力したときに見やすいと思った。

ちょうど >>62 で >>52 さんがデコード方法が書いてくれてるけど、
これだと、SQLの実行結果に処理入れなきゃいけないでしょ?

mod(strIP,(256^4)) & "." & mod(strIP,(256^3)) & "." & mod(strIP,(256^2)) & "." & mod(strIP,256)
ってビュー作ればいいだけの話だけどさ。

まぁこれは運用次第だけどね。
確かに256使った方が列のサイズが少なくなりそうだし。

64:57
05/08/10 23:52:09
あ、strIPじゃないね。スマソ

65:nobodyさん
05/08/11 11:06:35
IPアドレスとはそもそもどういったものなのか?
なぜ256という数字がいきなりでてくるのか?


66:nobodyさん
05/08/11 11:16:10
>>65
256=1バイト

67:nobodyさん
05/08/11 11:19:35
IPアドレスは本来32ビットの数値だよ。
それを人間がわかりやすくするために
1バイト単位に区切ってそれを10進数表記したものが
192.168.0.1とかの文字列になるんだよ。


68:nobodyさん
05/08/11 22:28:03
tmpary = split(txtIP,".")
for i=0 to ubound(tmpary)
tmpary(i) = right("00" & tmpary(i),3)
next
txtIP = join(tmpary,".")

0埋めとか桁あわせとかってあんまり格好良く書けねんだよな


69:nobodyさん
05/08/12 00:58:35
>>68
format関数でいけるんでない?

70:nobodyさん
05/08/12 07:43:16
広い意味でASP関連のことだが、
ひとつのグローバルIPがある
サーバが2台ある
光回線終端装置にルータをつないで、
そのルータに
192.168.1.11 Webサーバポート80
192.168.1.12 Webサーバポート80でもなんでも
の2台がつながっている。
この2台を同じドメインで運営することは可能なのだろうか?


71:nobodyさん
05/08/12 14:47:20
>>70
URLリンク(www.hoge.co.jp)
URLリンク(www.hoge.co.jp)

みたいにディレクトリで分けて良いなら可能


72:nobodyさん
05/08/12 14:51:30
>>70
負荷分散装置を使えば可能

73:nobodyさん
05/08/12 16:01:00
>>72
ロードバランサーなんておいたら
どっちにいくか分からないじゃん

74:nobodyさん
05/08/12 20:42:20
>>71
URLリンク(www.hoge.co.jp)
以下をサーバ1,ただしその中の
URLリンク(www.hoge.co.jp)
以下はサーバ2,
ともできるでしょ

75:nobodyさん
05/08/15 16:55:00
>>69
ASPのスクリプトでFormat使えたっけ?

76:nobodyさん
05/08/15 20:35:49
そういえばVBScriptにはFormatはないね

77:nobodyさん
05/08/15 22:37:05
FormatNumberとか実に中途半端なものはあるけどな。
どうして無いんだろう。

78:nobodyさん
05/08/16 22:05:44 JMv6lDkz
VBScriptの質問です。
2次元配列から、任意の行を1次元配列として取得するスマートな方法ってありますか?

↓こんな感じで
Dim arrData1(1,2)
arrData1(0, 0) = "a1"
arrData1(0, 1) = "a2"
arrData1(0, 2) = "a3"
arrData1(1, 0) = "b1"
arrData1(1, 1) = "b2"
arrData1(1, 2) = "b3"

Dim arrData2
' スマートな処理
arrData2 = ~~~
'arrData2(0) = "a1"
'arrData2(1) = "a2"
'arrData2(2) = "a3"

要素をループでぐるぐる回す処理しか思いつきませんでした。


79:nobodyさん
05/08/17 00:02:13
二次元配列じゃなくて配列の配列にすれば?

80:nobodyさん
05/08/17 01:13:02
前提の説明が不足していました。
データを2次元配列で保持している箇所については変更不可能です。
既存システムの機能追加ですので。

配列の配列を勧められるということは、2次元配列の場合はぐるぐるするしかないということでしょうか?
大した処理じゃないのでコーディングは全く苦ではないのですが、
1行で書ける処理をぐるぐるするのはカッコワルイなと思いまして。

暫くJavaの世界に行っていたので、VBScriptを忘れてしまったのですよ。


81:nobodyさん
05/08/18 21:55:04
ないと思われ。
Uboundで大きさ取ってループで突っ込むしかありませんな

82:nobodyさん
05/08/19 22:03:41
そうですか。じゃあぐるぐるします。
ありがとうございました。

83:nobodyさん
05/08/29 14:23:57 YVceYwl0
Server.URLEncodeとは逆に、エンコードされた文字列をデコードするメソッドとかありませんか。
URLEncodeと対になるものが、何かASPで用意されてないかと探しています。
でもみつからない。何でないんだろう。困るじゃん。

もしかしてデコードは各自創意工夫をするものですか?

84:nobodyさん
05/08/29 16:21:34
>>83
無い。
デコードはRequestで取り出したときに勝手にされるので普通は必要ない。

85:83
05/08/29 20:41:03
そーなんですか。探ってみます。


86:nobodyさん
05/09/05 21:05:30 dzd6pukh
IE6でアンカーにEXCELを指定した場合、
<a href="URLリンク(qupa.xls)"

右クリックで「対象を印刷」と出てきますが、
右クリックしないで印刷は可能でしょうか?
例えば、Buttonを作ってbuttonクリックで印刷とか?

可能であれば、方法を教えてもらえないでしょうか?
お願いします。



87:nobodyさん
05/09/05 21:25:21
>>86
基本的には無理だね。
スクリプトからノークッションで印刷できちゃったら
ブラクラならぬプリクラが出来てしまう。

例えばクライアント側で信頼済みサイトの設定ができるのであれば
wscriptを使えば何か出来るかも。

88:nobodyさん
05/09/05 21:56:17
>>86
昔はコレでできた。

onclick="(window.open('URLリンク(yahoo.co.jp)','_blank')).print();"

いまはセキュリティの関係でできなくなった。

89:86
05/09/05 23:43:57 dzd6pukh
基本的にはムリですか。
それじでは、ちょっとJavaScriptとダブってしまうのですが
右クリックでオリジナルのメニューを出すことは可能と思いますが、
右クリックで「対象を印刷」のみ出すか、
「対象を印刷」以外はEnableにすることはできますか?



90:nobodyさん
05/09/06 14:50:02 attaS1hZ
会社のサイトの(作成者は別会社)会員(販売店様)限定のところにID/パス
ワード入力せずに発信ボタンを押したら入れたそうです(この画面は会員すべて
共通のもの)。原因を突き止めないといけないのですがどういう原因があるかさ
っぱりわかりません。
あと、ASPで作ってます。
素人なりに考えてみたのはブラウザによって入れたりするのかなー?
とかそのボタン関係の不具合かなー?
とか思ったりしてるんですが、参考意見・もしくは勉強サイト等がありましたら教
えてください。
僕はWEB製作超初心者です。フリーのCGIを落として名前とかを変更するぐらいしか
できませんが、何日間は勉強する時間はできると思います。

91:nobodyさん
05/09/06 15:27:10 LC/QE+cC
↑原因 ウイルス

92:nobodyさん
05/09/06 15:35:11 attaS1hZ
ウイルスぐらいしか考えられる要因が無いですかね?ぜんぜんわかんないので
自分で考えろ!て話なんですが、わからないのでご教授お願いします。

93:nobodyさん
05/09/06 15:46:59
URLは?

94:nobodyさん
05/09/06 20:57:51 WhNf/x2R
2chに書き込むヒマあったら発注した別会社にクレーム付けろよ

95:nobodyさん
05/09/06 21:19:18
ID/パスワードに空文字を登録したバカがいるとか

96:nobodyさん
05/09/06 22:07:02
>>86
視野が狭まっている。よろしくない傾向だな。

「簡単に印刷が出来るようにしたい」だけなのか?
「保存などは不可で印刷だけ許可したい」のか?
その段階に立ち返って、最適な方法を吟味しなおす事をおすすめする。

後者はwebアプリを分かってない奴が仕様を決めたり
客の言い捨て的な要望を営業がのんできちまった場合に多いんだよな。
そんなのに付け入られるとひどい目に遭うぞ。

97:nobodyさん
05/09/06 22:39:17
>>90
あくまで憶測、だが…

1.変数を空文字列に初期化
2.入力されたIDをキーにして、DBから登録されているパスワードを検索
3.取得できたパスワード文字列変数に代入
4.変数に入っている文字列と入力されたパスワードが一致したらOK

という仕掛けだったとすると…

1.変数を空文字列に初期化
2.空IDで検索して該当無し
3.DBから取得できなかったので代入はスキップ
4.変数に入っているのは空文字列で、入力されたパスワードと一致!

となったりしそうな。

98:nobodyさん
05/09/06 23:08:27
>>90
セッション残っていたとかもありがち。
この場合はブラウザを閉じるまで保っちゃう。
空文字で入ったら誰のIDになるか確認するといいよ。

99:nobodyさん
05/09/06 23:31:59
>>89
ResourceHacker で Shdoclc.dll を弄れ。
アドレスは24641

「ボタンクリックで対象を印刷」もできないこともない
URLリンク(www.atmarkit.co.jp)

100:90
05/09/07 09:01:05 ZN4XmGrN
アドバイスありがとうございます。別会社にはクレーム付けてるんですが、
動いてくれるかどうか・・・。言われた内容を調べて見ます。


101:90
05/09/07 09:04:09 ZN4XmGrN
>>97
あと会社のPCだと普通に入れないんですが、とりあえずソースをよく見てみますね。


102:nobodyさん
05/09/07 09:57:14
Windows認証が通ったらパス入力画面がスルーする仕様とかだったり。

103:nobodyさん
05/09/09 13:39:57
改行コード部分をカンマにREPLACEしたいのですが…。

104:nobodyさん
05/09/09 22:45:50
>>103
STR.replace("\n",",");

105:nobodyさん
05/09/09 22:48:42
>>104
STR.replace(/\r|\n|\r\n|\n\r/g,",");

106:103
05/09/11 11:15:46 XVWHhBde
とりあえず、

改行コード込みの値が入ってる変数 = strhoge
Dim strA
A = Replace(strhoge, "vbCr", "vbCrLf")
A = Replace(strhoge, "vbLf", "vbCr")
A = Replace(strhoge, ",", "vbLf")

としてます。
MacとWinの改行コードを考慮した結果なのですが…。

みなさんのやってる「STR.Replace...」って、
ReplceしたものをSTR型にしてるって事ですか?

107:103
05/09/11 11:16:23 XVWHhBde
あ、AはstrAの事でしたorz

108:名無しさん@そうだ選挙に行こう
05/09/11 12:08:55
>>106
Replace関数はReplace(対象文字列, 検索対象文字列, 置換文字列)だろ。
おまいの例だと逆。
あとなんでvbLfとかvbCrの組み込み定数をダブルクォートでくくる?

ここ読んであとは自分で考えれ。
URLリンク(www.microsoft.com)

109:106
05/09/11 12:18:56
>>108
あ、ホントだ…

strA = Replace(strhoge, vbCrLf, vbCr)
strA = Replace(strhoge, vbCr, vbLf)
strA = Replace(strhoge, vbLf, ",")
だたorz
ごみん(´・ω・`)

110:nobodyさん
05/09/12 16:29:50
Forループの中で取得した値を配列に格納するはずのPGを書いてみたんだけど、
「インデックスが有効範囲にありません。: '0' 」とエラーが出ます。

-------------------------------
Dim A
' Aを配列に
A = Array()
' hogeの値をカンマ区切りで配列Bに格納
B = Split(hoge, ",")

For nCnt=0 To UBound(B) Step 1
 A(nCnt) = B(nCnt)
Next
-------------------------------
B(nCnt)の値は正常に取れてるのですが…

111:nobodyさん
05/09/12 17:28:02
>>110
よく読め
URLリンク(www.microsoft.com)

112:nobodyさん
05/09/12 21:57:37
>>110
そんな可変長配列の扱いはVBScriptには無い。
つーかそのサンプルがどんな意味なのか分からんが

Dim A()

B = Split(hoge, ",")
ReDim A(Ubound(B))
For nCnt=0 To UBound(B) Step 1
A(nCnt) = B(nCnt)
Next

やるならこんな感じだろうな

113:nobodyさん
05/09/13 00:45:26
この例をもっと短くするなら
Dim A, B
B = Split(hoge, ",")
A = B
ですむな。

114:nobodyさん
05/09/15 11:36:56
テキストエリアに入力された文字について、
前後に改行コードが入っていた場合はTrimで取り除けると思ってたんだけど、
除かれるのは、空白とかだけ。

文字列前後の改行コードだけを取り除きたい時は
どうすればいいのでしょうか?

115:nobodyさん
05/09/15 11:41:21
strWriteData = Replace( strWriteData, vbCrLf, "" )
strWriteData = Replace( strWriteData, vbCr, "" )
strWriteData = Replace( strWriteData, vbLf, "" )


116:nobodyさん
05/09/15 11:45:02
>>115
こうすると、文中の改行コードも全てなくなってしまうのでは?

117:nobodyさん
05/09/15 20:37:02
>>115
細かいけどそれをやりたきゃvbNewLineで置換すればOKだぞ
そして>>116の言うとおり。

正規表現を使えばよかろう。

Set regEx = New RegExp
regEx.Pattern = "(^\s*)|(\s*$)"
regEx.Global = True
strWriteData = regEx.replace( strWriteData , "")


118:nobodyさん
05/09/16 11:05:43 fPKBboZa
済みません、教えて下さい。

PDFファイルを生成するミドルウェアはなにがおすすめでしょうか。

・主にレコードセットから生成
・画像挿入
・ページ数制御
・ASP.NETに移行の可能性有り

これくらいの事しかやりませんので、
あまり多機能すぎて開発工数がかかりすぎるより、
多少、機能を削っても工数のかからないものがいいです。
予算は50万円くらいです。
(ユーザーを説得できるだけの機能があれば100万くらいまで可)

ASP
IIS 6.0
IE 6.0

よろしくお願いします。

119:nobodyさん
05/09/16 20:35:57
「工数かからないように」の一要素であるノウハウの多さという意味で言うと
PDFlibあたりがいいんじゃない?


120:nobodyさん
05/09/28 14:02:13
ASPで構造体は使えますか?
使えない場合、何か代替でよい手法がありますか?

121:nobodyさん
05/09/28 22:04:29
>>120
VBScriptにもJScriptにも構造体はありません。
代替はプロパティだけのクラス。

クラス定義が、
class clstest
 public prop1,prop2,prop3
end class
こんな感じで、このクラスを返す関数が
function getTest(arg1,arg2,arg3)
 Dim obj
  set obj = new clstest
   with obj
    .prop1 = arg1
    .prop2 = arg2
    .prop3 = arg3
   end with
  set getTest = obj
 end function
こんな感じ。
 set retvalue = getTest ("val1","val2","val3")
とすれば
 Response.Write retvalue.prop1
で"val1"が出る。

122:nobodyさん
05/09/28 22:23:19
>>120
JScriptの場合はここを参照
URLリンク(www.imasy.or.jp)

123:nobodyさん
05/09/29 07:56:05
動的にプロパティの追加が出来るのはtypo耐性が低くてイカン

124:nobodyさん
05/09/29 18:20:52
>>123
そこでUnitTestですよ。

125:nobodyさん
05/10/04 23:10:08
ASPのサーバ側の処理を排他制御する場合はApplication変数ででも出来るけど
並列してWSHでも定期的に行うようにするため、
代わりにFileSystemObjectでのファイル書き込みオープンでロック制御を試してみた。

<HTML><BODY><%
set fso = createObject("Scripting.FileSystemObject")
set basp = createObject("Basp21")
Response.Write time & " " : Response.Flush
set olock = fso.openTextFile("c:\work\lockfile",2,true)
Response.Write time & " " : Response.Flush
basp.sleep 5
Response.Write time & " " : Response.Flush
olock.close
%></BODY></HTML>

二つの画面で動かして
[17:00:00 17:00:00 17:00:05]みたいな感じとファイルオープン失敗でaspエラーになる事を期待したら
[17:00:00 17:00:00 17:00:05]と[17:00:05 17:00:05 17:00:10]となった。

ファイルオープンを待って[17:00:00 17:00:00 17:00:05][17:00:02 17:00:05 17:00:10]ならまだ分かるが
なぜ二番目のアクセスで最初の一発目も実行されないで待ってるんだろう?
ロックとしては結果オーライではあるんだけど、何か不思議。
何かこれに関係しそうなドキュメントとかあったらURLキボン。

126:125
05/10/05 20:57:09 QIcIBhGo
質問age忘れた

127:nobodyさん
05/10/05 22:43:21
>>125
ヒント: 遅延書き込み

128:nobodyさん
05/10/06 23:16:49
>>127
遅延書き込みは関係ない気がする…
むしろ実行時にスクリプトを先読みしてる?

あそっか、ASPとかのスクリプトエンジンって
実行時にコンパイルしてんだよな(後の方の構文エラーとかも先に出るし)。
この場合ファイル名がリテラルだから…。
なるほどな。結構色々気を回してくれるんだなASP。

129:nobodyさん
05/10/07 18:51:33 2Dl5nVCp
質問させてください

IIS(4.0)+ASP → ODBC → PostgreSQL

でADO接続しているのですが
.Close & Nothing 作業を行っても
Netstatで確認すると
数十秒コネクションが残ってしまいます。

ASPからDB接続するとデフォルトで
コネクションプールみたいな機能が
付いてたりするのですか?

(ODBCの接続プールは使用していません)

因みにVBScriptで作ってます。

130:nobodyさん
05/10/07 23:08:04 BE:36756623-##
>>129
ASPに関わらず、netstatでみると殆どのアプリが数十秒コネクション残るよ

131:nobodyさん
05/10/08 01:00:06 6j6nfXjs
まじっすか!!
実は2000人ほどログインするASPプログラムを
作成する予定なのですが
コネクションが数十秒残るとPostgreSQLでコネクション
限界に達してしまうんですよね…

接続プールやコネクションプールサーバを使用すれば
実現できるのでしょうか…
(もしくはロードバランサーで2台接続?)

みんなどうやってDB接続してるんだろう

情報(人-)謝謝(-人)謝謝です

132:nobodyさん
05/10/08 02:12:07
>>131
DB側のコネクションとネットワーク層のコネクションは別な話だと思うが

133:nobodyさん
05/10/08 11:04:49
>>131
ブラウザ→IIS間のセッションが増えても
その複数セッションに対して一つのコネクションを使いまわす事で
IIS→DB間のコネクション量が膨大にならないようにする
それがDBのコネクションプール

134:nobodyさん
05/10/08 11:14:57
いいや違うね

135:nobodyさん
05/10/08 13:05:50
端末~Webサーバが同時に2000アクセスしても
Webサーバ~DBへは同時に2000アクセスするわけではない。

下手すれば並列実行できずに待ち行列だよ

136:nobodyさん
05/10/08 19:27:47
新規DB接続を生成するオーバーヘッドを減らす意味もあるでよ

137:nobodyさん
05/10/09 03:12:32 /MEb5o0Y
DBソフト(PostgreSQL)の接続状況を見てみたのですが
やはりnetstatの接続内容と同じ内容になっていました。
netstat上でもClose後にESTABLISHのまま数十秒
コネクションを維持しています。

Close後にnetstatで見る情報がTIME_WAITEになっていたら
私も気にしなかったのですが…

ASPにてDBオープン

netstat上にDB接続コネクションがESTABLISHで発生する
PostgreSQL上でコネクションが確立する

ASPにてDBをクローズ
netstat上にDB接続コネクションがTIME_WAITEになる
PostgreSQL上のコネクションは開放される

数十秒後にnetstatからコネクション情報が削除される

が私の考える流れなんですが…

あってますか?

因みにASP上のDB解放作業って
Close & Nothing 以外ないですよね?

質問ばっかりですみません

138:nobodyさん
05/10/09 11:12:59
なんでそんなに接続を切りたいの?
複数リクエストに対して一つの接続が
使い回せてればそれでいいじゃん。

いちいち接続を切断するのは逆にオーバーヘッドが増えるって。

139:nobodyさん
05/10/09 12:04:16
>137
コネクションプーリングじゃないの?

140:nobodyさん
05/10/09 13:48:51
>>137
ちなみにPowergesとは何を使って接続してるの?

141:nobodyさん
05/10/09 20:46:04
>140
>129が>137の最初のレスのよーだがそこに書いてある
ODBC経由のADO接続らすぃ

142:nobodyさん
05/10/09 23:02:23 MkiNfj/O
137です。

ASP側でDBをCloseさせた後数十秒間
DB側のコネクションが持続するのが正常な処理であれば
私も問題ないと思うのですが、
コネクションプーリングしていない状況で上記問題が
発生しているためどういう事なんだろうかと頭を悩ませているところであります。

現在
①そもそもそういう仕様なのか?
②ODBCの接続プール以外にコネクションプーリングする機能がデフォルトで
存在するのか?
③ASP、サーバ設定等で開放するための処理が漏れているのか?
で色々調べているところです。

ASP以外の問題であれば板違いなのですが
①ASPのDB開放処理はClose & Nothing 以外することはない?
②ASPのDB接続にて同じような現象に陥った経験はありませんか?

ということを聞きたいです。

143:nobodyさん
05/10/09 23:16:16
>>142
> ①ASPのDB開放処理はClose & Nothing 以外することはない?
ない、、、というかこれ以上何かする方法もない

あとIIS4.0ってのはどうにかできないの?

っていうか、複数の端末から同時にIISにアクセスするとして、
IISって並列にDBにアクセスできるんだっけ??

144:nobodyさん
05/10/09 23:43:28 MkiNfj/O
皆様ご回答ありがとうございます!

たまたま手元にあったIISが4.0だったというだけだったのですが
なるほど…IISという可能性もあるかもしれないですね

IISに関してはまだ調べていないんでなんとも言えませんが
少なくともASPのソース自体に問題が無いという事で
要因の一つが消えて安心しました。





145:nobodyさん
05/10/10 00:37:37
>②ODBCの接続プール以外にコネクションプーリングする機能がデフォルトで
存在するのか?

存在します。
URLリンク(www.microsoft.com)
の図を見ればODBCの他に
その前のOLEDBにResource Poolingがあるのが一目瞭然だと思います。


146:nobodyさん
05/10/10 07:25:23
>>IISって並列にDBにアクセスできるんだっけ??
できます。

IISプロセスは当たり前にマルチスレッドなので
その各スレッドからのDBへのアクセスは並列になりますな。

147:nobodyさん
05/10/10 21:44:46 47556GXn
Resource Poolingというのをはじめて知りました。
Microsoftのページは見てたつもりだったんですがお恥ずかしい(汗

どうやらADOでMDAC2.1以降を使用している場合
デフォルトで動作するようでこれが原因である可能性が
高い気がしてきました

テストしてみます

ありがとうございました

148:nobodyさん
05/10/23 20:30:47
<input type = file>で参照したcsvファイルで
work_Aというテーブルに書き込めるようなプログラムはどう書けばいいのでしょうか?
参照するcsvはwork_Aテーブルとカンマで区切られて同一構造になってます。
サーバーはSQLサーバーです。
分かりづらい説明かもしれませんが宜しくお願い致します。


149:nobodyさん
05/10/23 23:46:53
Global IP のあるフロントエンドサーバーが ASP で、
LAN にある FreeBSD から text/html なデータをだしたいんだけど、
どういう風にすればいいんですか?便利な proxy とかありますか?

150:nobodyさん
05/10/24 00:49:30
>>148
一旦アップロードしたうえでfsoかadoで普通に読む
or
ADODB.Streamでアップロードも含めて一括でやる

151:bob
05/10/24 14:53:50 txJyGq/T
違うスレでかいたのですがこちらに誘導されましたので
質問させて下さい。
会社でwebデザインをしています。プログラムはASPを使っており
外注しております。そのためASPに興味が出てきたため勉強をしたいのですが
なにから勉強したら良いか分かりません。ASP+SQLServerLです。
また良い参考書などがありましたら教えて頂けますか?
宜しくお願いします。

152:nobodyさん
05/10/24 16:26:50
URLリンク(tryasp.winscom.co.jp)

153:nobodyさん
05/10/24 20:34:52
>>149
FreeBSDのマシンで普通にWebサーバ動かしておいて
フロントエンドサーバからXMLHTTPとか使ってFreeBSDサーバからデータを取って
そのままクライアント送り出すとかが安直でいいのでは。

>>151
URLリンク(www.gihyo.co.jp)
これ結構おすすめ。

154:nobodyさん
05/10/24 22:19:47
ASPを勉強中なのですが、サンプルでわからないところがあるので教えていただけないでしょうか?
<%
sCoString = "DBQ=" & Server.MapPath("./sample.mdb") & ";"
sCoString = sCoString & "DefaultDir=" & Server.MapPath("./") & ";"
sCoString = sCoString & "Driver={Microsoft Access Driver (*.mdb)};DriverId=25;"
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open sCoString

sSQL = "INSERT INTO tablename SELECT * FROM [TEXT;DATABASE=C:\mdb].[test.csv]"

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sSQL, cn, 3, 3, 1
set rs = nothing
set cn = nothing
%>

とあるのですが、下のほうに
rs.Open sSQL, cn, 3, 3, 1
とあるのですが、
この3,3,1という数字は何なんでしょうか?
どうぞよろしくいお願い致します。


155:nobodyさん
05/10/24 23:02:13
カーソルモードを定数化もしていないようなそんなウンコなサンプルは捨ててしまえ!


156:nobodyさん
05/10/24 23:32:16
>>154
静的カーソル
ReadOnly
コマンドテキスト

157:nobodyさん
05/10/24 23:33:11
>>153
俺もそのテキスト気に入ってる

158:nobodyさん
05/10/24 23:44:59
>>154
URLリンク(www.microsoft.com)

159:nobodyさん
05/10/26 01:22:49
複数行入力できるフォームを作り、入力された文中にある特定の行と列の数値で計算を行いたいのですが、
どのような考え方やプログラムを行えばいいでしょうか?
入力する文は数値以外は固定です

例)--------------------------------------
************************** 100

*********** 200 ******

    ****300
    ****400

****************500

-----------------------------------------



160:nobodyさん
05/10/26 01:43:44
>159
正規表現。
それがイヤなら数値の前後の文字列をInStrとかで検索して
場所を特定してからMidなどで数値だけ抽出。
(関数名はVBScriptの場合)

161:nobodyさん
05/10/26 20:54:07
>>159
数字以外が固定なら数字のところだけinput type=textにした方がいいんじゃないか…
余計なお世話だが、一度そういう無理をしてしまうと
後々になって全角も認識するようにしろとか
「3千」とかも読み取れるようにしろとか
だけど「八千代商事」とかはスルーしろとか
だんだん要求がアホらしくなっていったりしていくんじゃないかと心配してしまふ

162:nobodyさん
05/10/26 20:58:37
>>161
ime-mode:disabled と javascript で isNaN かけるとモアベター

163:nobodyさん
05/10/27 00:32:40
今、会社でASPの勉強をしているのですが、COMをかなり利用していて全然理解できません。
クラス化とかさっぱりわからないのですが、なにかいい参考書やHPはないでしょうか?
よろしくお願い致します。

164:nobodyさん
05/10/27 00:38:09
>>163
きついようだけど、レガシASP程度で全然理解できないとなると、、、、

多分、ASPの日本語の参考書って10~20冊くらいしか出てないから
本屋で好きなのを買った方がいい。

165:nobodyさん
05/10/27 02:38:55
>>160
ありがとうございます。何とかInStrやMidなどを使い数値を抽出することができました
本で正規表現を読みましたが、短期間ではちょっと理解ができませんでした・・・

>>161
もともと別データから抽出したデータ中の必要な数値データを計算するだけなので問題ありません
心配ありがとうございます

166:nobodyさん
05/10/27 08:01:10
>>163
いやでも自作COMコンポーネントをたくさん使ってると
後から予備知識無しだと全然読めないよね…

167:nobodyさん
05/10/28 22:10:00
>>166
自作COMコンポーネントだったら参考書買っても無理だろ

168:nobodyさん
05/10/30 01:43:33
ASPで翻訳サイトなどにあるクリックすると枠内にあるテキストが消えることってできるんでしょうか?
ソースを貼り付けて実行しようとしてもエラーが出てしまいます。

169:nobodyさん
05/10/30 01:47:13
>>168
クリックするとテキストボックスが消えるってのはJavaScriptではないのか?

170:nobodyさん
05/10/30 02:50:12
InterDevでASPの勉強してるんですが、
デバックって皆さんどうやってるんでしょうか?
ASP.NETみたいにブレークポイント作っても止まってくれませんよね?
イベントドリブンじゃあないから当たり前なのでしょうか?
今は、logファイルに変数を出力してやってますが、ほかになにかないんでしょうか?


171:nobodyさん
05/10/30 03:48:29
>>170
Microsoft Script Debugger の最新版でできる。
俺は使わないけど。

172:nobodyさん
05/10/30 20:29:07
アンケート画面をつくりたいのですが、
項目の1つに選択項目が7,8個ありまして、
それを1位から再下位まで順番をつけてもらいたい項目があるのですが、
どんな形で実現すればよろしいでしょうか?
アドバイスお願い致します。


173:nobodyさん
05/10/30 21:16:35
>>170
Response.Write "<HR>" & 変数 & "<HR>"
Response.flush

とかを途中にぶち込むと画面は乱れるが大体どうなってるのか分かる
ログファイルに書き出すより、画面の描画の進度と見比べられるので俺は好み。

>>172
Javascriptのテクニックになるのでスレ違いだな

174:nobodyさん
05/10/30 23:39:29
なんか、クライアントサイドとサーバサイドの区別も付かないヤツが多いな。
とりあえずJavaScriptくらい極めればいいのに。
そうすればJScriptでASP組めるし。

175:nobodyさん
05/10/31 02:33:29
>172
テキストフィールドを1つ用意してカンマ区切りで入力してもらえば?

176:nobodyさん
05/11/01 18:17:13
すみませんがスレ違いかもしれませんが教えてください

Server2000から2003に移行をしているものです。
IIS5.0では上手くいってなのですがIIS6.0にした途端
Session変数(関数?)がページ間で上手くわたらないのですが
なにかIIS6.0の設定が必要なのでしょうか?
クッキーもページ間で値渡しができなくてこまっています。
(クッキー自体はもしかしたら登録すらできてなかも・・・。)


いろいろ調べたのですが、なかなか出来なくて困っています
もしよろしかったら教えてください。
IIS5.0 プロセス分離モード ってやつもやってみましたがダメでした

177:nobodyさん
05/11/01 18:19:52 olXap06e
>>176
ageときますスミマセン

おなじ事をサーバーで行なうと上手くいきます。クライアント側がさっぱりなのです


178:nobodyさん
05/11/01 20:50:26
>>176
クライアントのセキュリティ設定が
その2003サーバに対してCookieを拒否するようになってたりせんか

179:nobodyさん
05/11/01 21:44:58
>>176
ローカルだとうまく動くんでしょ?
なら >>178 の言うとおりIE側の設定じゃね?
新しいサーバのホストは信頼されてる?

180:176
05/11/01 21:44:58
>>178
そうかもしれませんが、server2000では何も設定せずにうまくいくのに
server2003だとクライアント側を設定しなければならなとなると、導入に問題なのですが・・・。
IISの設定じゃないのですかねぇ??

181:nobodyさん
05/11/01 21:45:56
>>179
ホスト→ホスト名

182:176
05/11/01 21:48:44
>>181
ホスト名・・・。しらべてみます。うまくいったら報告します。

183:176
05/11/01 21:55:48
ホスト名 ビンゴ!!。アドレスにコンピューター名を入れていました。
IPアドレスにしたら完璧に動きました。(LAN内ですので)

みなさまどうもお騒がせしました。まじ感謝です

184:nobodyさん
05/11/01 22:40:03
お世話になります。

現在、asp上のリンクをクリックするとDBにバイナリデータで格納されているpdfファイルを読み込み、
ブラウザに表示をさせるという処理を行っているのですが、
ブラウザに表示できる端末とダウンロードのダイアログが出てきてしまう端末があります。
色々原因を探っているのですが、
今現在わかっているのはダイアログが表示される端末は
全てAcrobat Reader5.0がインストールされているものだということだけです。
しかし、Acrobat Reader5.0がインストールされていてもブラウザに表示できる端末もありました。
また、Acrobat Readerの設定(ブラウザで表示するかどうかの設定)が悪いのかと思いましたが、
pdfファイルをブラウザに放り込んでやるとちゃんとブラウザ上で表示されていました。
さらに、正常に表示できる端末では、
右クリック→対象をファイルに保存 としてやると正常にpdfを保存することが出来ますが、
ダイアログが表示される端末では 対象のファイルがありません のようなエラーメッセージが表示されてしまいます。
ちなみに、現在他のシステムも稼動していますので、
環境を変化させないために全ての端末にAcrobat Readerの最新版をインストールするということは出来ません。

現在わかっていることはこのぐらいなのですが、
ダイアログが表示されてしまう原因は何なのでしょうか?
また、上記で「ブラウザ」と表記しているものは全てIE5.5以上です。

185:nobodyさん
05/11/02 04:34:36 8yGkDJEQ
ASPからWMIを使用し、JScriptで記述した場合の問題に直面しています。

あるフォルダの所有者を取得したいのですが、
VBScriptで以下の用に記述した場合は問題なく動作します。

<%
strFolderName = "C:\\Sample"
Set objWMIService = GetObject("winmgmts:")
Set objFolderSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFolderName & "'")

Dim objSD

intRetVal = objFolderSecuritySettings.GetSecurityDescriptor(objSD)

If intRetVal = 0 Then
Response.Write( "Ownerは[" & objSD.Owner.Name & "]" )
Else
Response.Write( "Couldn't retrieve security descriptor." )
End If

On Error Resume Next
%>

186:nobodyさん
05/11/02 04:35:05 8yGkDJEQ
しかし、JScript版で以下の用に記述した場合、
'Owner' は Null またはオブジェクトではありません。 と表示されます

<%
var strFile = "C:\\Sample";
var objWMIService = GetObject("winmgmts:");
var objFolderSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" + strFile + "'");

var objSD;

varintRetVal = objFolderSecuritySettings.GetSecurityDescriptor(objSD);

if ( intRetVal == 0 ) {
Response.Write( "Ownerは[" + objSD.Owner.Name + "]" );
} else {
Response.Write( "Couldn't retrieve security descriptor." );
}
%>

JScriptで記述した場合、何故objSDはundefinedになってしまうのでしょうか?
どなたかこの現象の原因のわかる方どうか解決方法のご指示をお願いします。
m(__)m



187:nobodyさん
05/11/02 09:07:57
>>186
> var objSD;

JScriptの場合、これだけでは定義したとはいえない。
この状態で objSD の値は null 兼 undefined

188:nobodyさん
05/11/02 09:10:34
>>184
Response.ContentType を明示的に宣言してる?

189:186
05/11/02 09:56:01 8yGkDJEQ
>>187

レスありがとうございます。

自分ではGetSecurityDescriptor()にobjSDを渡せば、
内部でobjSDに対して何某かのインスタンスが生成されて
情報がセットされ戻ってくると思い込んでいたのですが、

それはつまりGetSecurityDescriptor()に渡す前に、
既に何某かの型でインスタンスを生成してobjSDに参照させていないのが
今回の原因ということでしょうか??

190:nobodyさん
05/11/02 19:01:42
>>184
ブラウザのキャッシュを空にしたりすると動きが変わるかも知れない
それを差し引いてもAcrobatReaderの設定は揮発するから微妙なところだな

んで他のシステムではAcrobatReaderを何に使ってる?
他の同様のシステムではPDFがブラウザでちゃんと表示できてるのであれば
>>188氏の言うとおり、ContentTypeでapplication/pdfを明示的に指定することで
うまく行くようになるかも知れないと思われ

191:nobodyさん
05/11/02 20:33:25
>>186
JScriptには参照渡しが無いからそういうメソッドは使えねえべ

192:nobodyさん
05/11/02 22:59:56
>>189
>>191氏も言っているがJScriptにおける代入は "=" のみ。
関数の引数は全て読み込みのみになる。つまり値渡しか使えない。
関数の中で引数の値を変更しても、外には出れない。




193:184
05/11/02 23:46:26 jsGUnMcJ
>>188>>190
どうもありがとうございます

>>Response.ContentType
Response.ContentTypeはapplication/pdfを指定しています。

>>キャッシュ
IEのインターネットオプションでキャッシュを削除してみたところ、
1台のみpdfが表示できるようになりました。
しかし、表示できるのは初回のみで、
2回目以降は表示できませんでした。
また、no-cacheの指定もしてみたのですが、
この指定をしてしまうと初回時に表示することが出来なくなってしまいました。
(Microsoftのサポートページにキャッシュを制限する指定をすると
ダウンロードダイアログが表示されてしまうという既知の問題が載っていましたので、
おそらくこれが原因だと思われます。)

また、他のシステムで実際にpdfが使用されているのかはよくわからないそうです。
しかし、やはり環境を変えたくないという事と、
端末は各店舗にあり、使用しているのはパソコンの素人であることから
Acrobat Readerのアップグレードはしたくないそうです。


長くなりましたので2つに分けます。

194:193続き
05/11/02 23:47:30 jsGUnMcJ
以上のことにより、代替案を考えてみました。

DBからバイナリデータを読み込み、一時ファイルとしてサーバーに書き出す。
そのファイルに対してリダイレクトを行う。

というものなのですが、この案にも問題があります。
1.ASPには標準ではバイナリデータの書き出しが出来ないので、どのようにして一時ファイルを書き出すのか。
2.pdfには個人情報が含まれているので速やかにファイルの削除をしたいが、
pdfの読み込み終了を待ってからファイルの削除をすることが出来るのか。
の2点です。

1に関しては、ADODB.Streamというものがあるそうですが、
現在ではセキュリティの問題上、IEでは使用することが出来ないそうなのです。
色々調べてみたところ、BASP21というものが存在し、
それを使用すれば書き出すことが出来るそうなんですが、
現在自宅に居るため確認が取れない状態です。

2に関しては、1日に一回バッチを走らせてファイルを削除することを考えていますが、
24時間という時間が「速やか」かと言われると問題があると思います。


>>184の内容、もしくは今回の代替案に関して
こうしたらいいのではないかという意見がありましたら教えていただけないでしょうか?

195:nobodyさん
05/11/03 11:31:14
>現在ではセキュリティの問題上、IEでは使用することが出来ないそうなのです。

その書き出しはサーバ内で行われるものでしょ?
IE関係ない。ADODB.Streamで普通に出来る。

>2.pdfには個人情報が含まれているので速やかにファイルの削除をしたいが、
>pdfの読み込み終了を待ってからファイルの削除をすることが出来るのか。

普通に考えると出来ないね。
他の方法を考えた方が良さそうだな。

あとはダメ元でcontent-disposition:attachmentとかを使ってみると
関係無さそうだけどまた状況が変わるかも…

つかそれ以前にその状況って、pdf直リンクならちゃんと開けるのか?
Content-typeをちゃんと設定してバイナリ吐くんだったら
クライアント側に流れるパケットはpdf直リンクとほぼ同じになるはずなのだが?
直リンクでちゃんと開けるのであったら…本気で解決したいなら
etherealとかでpdf直リンクの場合とバイナリ出力aspの場合の
それぞれのレスポンスヘッダをキャプチャして違いを見てみて、
違いがあったらバイナリ出力aspにヘッダを追加する。
それが一番手っ取り早い。

196:nobodyさん
05/11/03 11:35:02
>>194
AcrobatReader5 のブラウザ内表示は悲惨なんだよ。
「Web表示用に最適化」がONになってるPDFをブラウザ表示させるとページが落丁したりする。

Adobeのサポートページに色んな情報があるから見てきな。

197:nobodyさん
05/11/03 11:37:29
>>193
PDFのブラウザ表示はクライアント側の設定に依存するから
サーバ側でどんなにやったって無理なものは無理だよ。

198:186
05/11/03 20:35:58 KtvlL72l
>>191,192
レスありがとうございます。

そしてJScriptに参照渡しが無いことを始めて知りました...orz
当たり前に存在するものだと...orz

するとJScriptではGetSecurityDescriptor(引数)に値する処理は、
行えないのでしょうか?

それともまったく別の記述方法でならDACLに値するものを取得することは
可能なのでしょうか?

199:184
05/11/06 23:28:23
レスが遅くなってしまって申し訳ありませんでした。

皆さん色々なアドバイスどうもありがとうございました。
SEと相談し、結局SEが何かしら対策を考えるから今のまま作っていくことになりました。
色々アドバイスを頂いたのにもかかわらずこんな結果になってしまいましたが、
とりあえずはこのまま作っていきます。

本当にどうもありがとうございました。

200:nobodyさん
05/11/07 20:19:05
>>199
いや、元々システムの設計としては間違ってないんだよ。
AcrobatReader 5.0の動き、ひいては
そんな微妙な動きをする時代遅れの古いバージョンを使い続ける…というのが良くない。
IEやOSのバージョンが上がってるんだからプラグインもバージョン上げていかないとねえ。

まぁガンガレ

201:nobodyさん
05/11/10 16:34:58 l71/uwis
ASP.NETを使い始めたばかりで、今試行錯誤しながらテストしているのですが、HPを作る際に
画像を貼り付けたのですが、ftpでweb上にアップロードし、確認しようとしてみてみると
画像やコンボボックス等のオブジェクト類が一切表示されていません
ツールボックスのWEBフォームからオブジェクトを持ってきたのですが、HTMLのオブジェクトだと
表示されるようです。
.netによるデバック時は表示されているのですが、 web上だと表示されないのは何かが
足りないからかと思うのですが、わかりません。
漠然としていて申し訳ないですが、「これがないとダメポ」というのはありますか?
XMLファイルが無いのですが、これって関係ありますか?

202:nobodyさん
05/11/10 18:10:20
【質問】ASP.NETスレ Part2【議論】
スレリンク(php板)

203:201
05/11/10 19:15:00
ありがとう。そっちに逝ってきます

204:668
05/11/11 11:39:15 CsKh1TLX
リストボックス内のすべての値をRequest.Formにて取得したいのですが、
現状セレクトされている値しか取得できません。
どうすれば、取得することができるのでしょうか?


205:nobodyさん
05/11/11 19:54:32
>>204
Javascriptのテクニックになるのでスレ違いだが
submitする直前にselect のmultiselectをonにして
全optionをselectedにしてからsubmitすればいい。

206:668
05/11/13 11:23:37 GnU/8u4f
>>205
ありがとうございます。
やっとできました。

207:nobodyさん
05/11/17 16:29:44
以下の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にできません。方法ってないですか?

208:nobodyさん
05/11/17 19:58:09
<%@ 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>

209:208
05/11/17 19:58:44
考えられる原因は?

210:nobodyさん
05/11/17 20:30:17
>>209の書き方がちょっとカチンとくるがヒントを出してやるか

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

>>207はWMIを使うという選択肢もあるかも。
>>208は…そのページにアクセスするとサーバでメモ帳を立ち上げたいのか?
意味が分からん。

211:208
05/11/17 20:41:09
>>210

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

WMIを検索して勉強してみます。

212:208
05/11/17 22:32:37
うーん。

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



213:nobodyさん
05/11/17 23:32:08
>>212
敷居が高いの使い方がまちがっている

まあ、アクセス権限だな

214:nobodyさん
05/11/18 00:17:36
最強に強まっていいのなら
IWAM_USERをAdministratorsグループにぶち込めば
大抵の事は可能になるが。

215:nobodyさん
05/11/21 17:03:41
どうしても分からないことがありますので、どなたか教えて下さい。
以下のsampleソースを参考にメール送信フォームを作成したんですが、
CCにて、複数の宛先に送ることができません。(Toは固定アドレスです。)

参考にしたURL:URLリンク(narita-system.co.jp)

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
%>

お願いします。

216:nobodyさん
05/11/21 17:20:15
objNewMail.Cc = Request("name") & "," & Request("boss")
やないの?

217:nobodyさん
05/11/21 17:33:40
>>216
あっさり、できました!!!ありがとうございました!!
感謝します!!!

218:nobodyさん
05/11/24 01:17:36
DBからデータを取得して、
Office XP Webコンポーネントを使用して、
2軸のグラフを表示したいのですが、

どこか参考になるサイトありませんか?


219:nobodyさん
05/11/24 01:31:43
>218
[OFF2003] [HOWTO] Office Web コンポーネント (OWC) のプログラミングに役立つ各種情報とサンプル
URLリンク(support.microsoft.com)

220:nobodyさん
05/11/24 01:39:55
>218
サーバー側のグラフ作成機能を使用してグラフを動的に生成する方法
URLリンク(support.microsoft.com)

221:nobodyさん
05/11/24 10:31:12
あちこち調べてみましたがわからないので教えていただきたく。

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

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

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

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

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




222:661
05/11/27 10:29:06 j0DdBp+E
今、会社でASPの開発でInterDev6.0を使用しているのですが、
左側に行数を表示するできないのでしょうか?

223:nobodyさん
05/11/28 08:01:03
左側?

224:nobodyさん
05/11/28 23:20:24
>>222
行番号を表示ってことでしょ?
使ったこと無いから分からんが。

225:バッカーです ◆KeuXjwWDdE
05/11/29 01:26:36
インターデブ。あれ、何がいいのか未だにワカラン。
とりあえず行番号なら多分なかったと記憶してるよ。

226:nobodyさん
05/11/29 16:44:32
InterDevはサーバ側のVBScriptの部分と
クライアント側のJavascriptの部分の両方で
キーワード色分けが出来るのは良かった。
あと現在オープン中の全ファイルからの検索&置換。

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

まあ少なくともデザインビューは100%使ってなかったな。

227:nobodyさん
05/11/29 20:40:46
色分けに関してはPeggyシリーズがとても良い

228:nobodyさん
05/11/30 18:15:34
最近、Perl・PHPからASPをやり始めたんですが、
ASP(VBScript)についてどうしてもわからないことがあります。

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

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

すみませんがご教示願います。

229:nobodyさん
05/11/30 21:26:15
まあ普通どんな長文だとしてもブラウザのtextareaに
原稿用紙みっちり埋めて128枚分は書かないからなあ。
あんまり大量のデータだったらファイル添付かな。

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

230:228
05/11/30 21:34:55
>>229

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

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

フォームのチェックボックス(name="checkbox")を受け取った場合、
Request.Form("checkbox")(1) などで要素にアクセスできるので
配列かと思い、 IsArray( Request.Form("checkbox") ) をやったところFALSE が返ってきました。
普通の配列は TRUE が返ってくるんですがこれはそういうものなのでしょうか?
チェックボックスかどうかを判断する材料が無くて困っています。


231:nobodyさん
05/11/30 21:36:29
>>228
ADO.StreamかBASP21を使って展開するのが常識になってる。

あと、これも忘れずに

Windows 2003+IIS6で200KBを超えるファイルがアップロードできない
URLリンク(www.hi-ho.ne.jp)

232:nobodyさん
05/11/30 21:37:53
>>230
VB配列じゃない

233:nobodyさん
05/12/01 03:07:58
>>230
なんでname="checkbox"なんだよ
適当に分かりやすい名前つければいいじゃんw

234:228
05/12/01 12:15:06
>>231
別のモジュールで対応するんですね。
Win2003での不具合についても情報ありがとうございます

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

>>233
checkbox だよってのを明示的にわかりやすくしただけです。
テストでやっていたので業務ではこんなことしませんよw

235:nobodyさん
05/12/01 20:36:09
普通の配列で欲しければ
split(Request.Form("checkbox"),", ")
とかでそれっぽいの取れなかったっけかな

236:nobodyさん
05/12/01 20:45:37
>>234
Formはオブジェクトですな

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

237:nobodyさん
05/12/03 00:00:48
>>234

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

フォームで送られてくるデータは name と value の組の単なるテキストだから
checkbox かどうかを判別する方法なんてそもそも存在しないよ。

238:nobodyさん
05/12/03 01:03:29
>>237
Request.Formはコレクションジャマイカ?

239:nobodyさん
05/12/04 20:53:53
Request.Form と Request.Form("checkbox") は違う

240:NT4.0
05/12/06 15:14:51 A31iTPx+
運用してるサーバが、突然、
「HTTP/1.1 新しい Session の作成に失敗しました」というエラーは吐くようになりました
原因わかる方いましたら、お願い致します




241:nobodyさん
05/12/06 15:18:22
メモリ不足?
一回再起動してみたら?

242:240
05/12/06 16:32:32 A31iTPx+
すいません
NT4 じゃなくて、2000 Server でした

再起動したら直ったんですけど、
原因不明のままだと、チトまずいんで・・・

243:nobodyさん
05/12/06 17:11:53 XSSghKFO
教えてください。
そこそこ閲覧のあるHPを公開したとして、ソースはなるべく短くし、DBとのやりとり(ストアド等)の数を減らしたり
してあげたほうがユーザー側にも、サーバー側にも負担って少ないですよね?
aspx.vbのソース行数を見ると1000行を軽く突破する勢いなんですが、多すぎますか?
ちなみに目標は1日1万ページビューで、SQL-SERVER+XPです


244:nobodyさん
05/12/06 17:48:36
>>242
セッションが新規作成できないくらいに、メモリ使ってるとか?
メモリを使って開放してないとか?

>>243
そこそこの定義がわからん。
1000行なんてコンマ何秒の処理だろ。

245:243
05/12/06 17:50:50
>>244
わかりにくくて申し訳ないです。
そこそこ=目標は1日1万ページビューです
ちょっと安心しました

246:nobodyさん
05/12/06 17:51:32
>>243
aspx.vbはスレ違いだが…
まあソースは短いに越したことは無いが、
1000行程度ならそう長い訳でもないだろう。
ASP.netならなおさらクラス定義やなんやかんやでソース上で行数食うしね。

DBとのやり取りも回数を減らすに越したことは無いが、
大抵はそれより「途中で無駄なデータを発生させない」ように
気をつけておいた方がいい。
たとえば20件ごとに表示するのに、データ全行取り出して
要らない部分を空読みしてスキップ、
というようなことをやるとデータが増えるにしたがってたちまち重くなる。

247:nobodyさん
05/12/06 19:00:09
ソースが短いからといって負荷が軽いとは言えない。

248:nobodyさん
05/12/06 21:58:25
asp.netってコンパイルするんでしょ?
じゃぁ1000行なんて余裕でしょ。

多少長くても、定義やセッションの切断とかを明確に書いた方が早いことが多いよ。

249:nobodyさん
05/12/07 00:47:24
>>248
実はレガシASPも実行時はコンパイルされてるぢょ

250:nobodyさん
05/12/07 11:04:22 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で配列の最大要素番号を指定してから出ないと
エラーになることはわかったのですが、
実際、どのように書いたらいいのかわかりません…。

251:250
05/12/07 11:36:40
解決しますたm(__)m
激しく勘違いを…(((;゚Д゚))) ガクガクブルブル…

252:228
05/12/07 17:23:06
すみません、レス遅れました…

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

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

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

何か簡単なフォームASPのサンプルって転がってないですかねぇ…
VBScriptがなかなかなじまない…

253:228
05/12/07 17:34:56
結局のところ、フォームからのクエリを処理するために、
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>")
-----
な感じでやっています。
(変なことしてないかな…

すみません、ご指摘いただければと思います。

254:nobodyさん
05/12/07 19:51:07 +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

255:nobodyさん
05/12/07 22:18:10
>>228
複数のcheckboxがある場合はASPでは>>235みたいにするのが普通だと思う。
splitの後にisArrayで配列になったかのチェックをすればいい。

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

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

>>254
cn=ユーザ名, を加えればいいんじゃない

256:228=252=253
05/12/08 00:07:26
>>255

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

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

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

また、100KB についてですが、確かにファイルアップが無ければ
滅多に超える容量ではないとは思うんですが、100KB の制限が
あるものを使うのも設計上どうかと思ってます。
どのようなフォームでも大丈夫なように、制限の無いものがあるのであれば、
あらかじめそれを使いたいってのが本心です。
でも実際のところはどうなのかな?と疑問に思ってました。
別のモジュールが必要だったり、制限があっても気にしないのが
ASPとして一般的であれば、それに越したことは無いので。。


257:nobodyさん
05/12/08 21:04:01
BASPのFormメソッド使うやり方だと
100KBの壁を超えられるのかも・・・?

バグが無ければだけどナー


258:nobodyさん
05/12/09 19:40:03
ASPのフォームでメールアドレスを入力させるときに
ドメインがちゃんと存在するかをチェックしたいと思っています。
VBScriptにMXレコードを見るなどのモジュールは存在しますか?

259:nobodyさん
05/12/09 21:28:20
>>258
あるべ。VBScriptにはないけど。

260:nobodyさん
05/12/09 22:28:32
標準で頑張るには裏でWScript.Shell使ってnslookupを実行する、
とかになるのかな?

261:258
05/12/12 15:52:11
>>260
ありがとうございます。
標準ではnslookupからひくしかないんですね。
戻り値の判断が非常にむずかしそう…
>>259
VBScriptではきついってことでしょうか?
何か方法があれば教えていただけると助かります


262:nobodyさん
05/12/13 06:38:36
>>261
VBScriptにはネットワークにアクセスするメソッドがないからね

BASP使ってSocketで何とかするか…
またはVBでDLL作っちゃっても良さそうだけどね

263:nobodyさん
05/12/13 21:54:09
>>261
DNSから引くって考えるより、実際にメールを送信してみた方が早いかも。
ドメインがなければサーバエラーを受け取れるし。

264:nobodyさん
05/12/16 14:00:18 ys2aEO8I
初歩的な質問かもしれませんが

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

TypeName関数では無理だったのですが分かる方いたら教えて下さい。


265:nobodyさん
05/12/16 18:50:57
>>264
isNumeric

266:nobodyさん
05/12/16 19:57:23
>>264
isNaN

267:nobodyさん
05/12/17 02:17:00
>>265-266
できました
本当にありがとう



268:nobodyさん
05/12/24 16:15:38
特殊文字「"#$%&'()」のような文字を弾く(エスケープ)するには、
HTMLEncodeを使用する以外の方法はあるんでしょうか?


269:nobodyさん
05/12/24 18:06:46
>>268
つString型

270:nobodyさん
05/12/24 20:17:32
>>268
そういう特殊文字をどうしたいの?
textboxとかに入力されたそういう文字を何とかしたいのか、
そういう文字を画面に出したいのか、
querystringで渡すときにおかしくならないようにしたいのか、
input type=textの初期値として設定したいのか。
「特殊文字を弾く」なんていう日本語では何をしたいのか全く通じない。

>>269
VBScriptにそんな型なんかねえよ

271:nobodyさん
05/12/24 21:47:32
>270
まぁまぁ。
TypeName("aaa")は"String"を返してくるんだし。

272:nobodyさん
05/12/25 02:25:45
>>270
君のような融通のきかない馬鹿はエンジニアとして失格。

273:nobodyさん
05/12/25 07:52:31
>>272みたいに融通を利かせてしまう奴が
東証のシステムみたいなのを作ってしまうんだろうな。

274:nobodyさん
05/12/25 11:42:36
>>273
なるほど。>>270が融通のきかない馬鹿な使えないエンジニアであることは
認めるわけですな。ご苦労さん。

275:nobodyさん
05/12/25 11:44:05
>>273
え? 東証のシステムのどこがおかしいの?
おかしいのは周辺の人間であってシステム自体は至極まっとうなもの。

やっぱお前だめだよ。まともなシステムに関わったことないんだね。
カワイソス

276:nobodyさん
05/12/25 18:50:40
なんか香ばしくなってきてるな。

>>270の指摘は、言葉はくどくて感じ悪いが言っている事は至極真っ当だと思う。
>「"#$%&'()」のような文字
って、確かにどれもアルファベットや数字の類ではないけど
それらを十把一絡げに「特殊文字」と呼んで「弾く(エスケープ)」
と言われても何についてのことだか分からない…。

277:276
05/12/25 18:57:56
なんか傍から見てると
>>270=言葉遣いがきつく対人能力は低そうだが仕事は細かい使えるPG
>>272=大雑把な雰囲気だけ指図して満足、
     その後PGから指示漏れを指摘されると逆切れして相手を馬鹿扱い…
     という使えないSE
みたいに見えるんだけどw

しかも
>>274 11:42:36
>>275 11:44:05
これ明らかに>>272の自演だろw

278:nobodyさん
05/12/25 23:10:43
>>277
いや、自作自演じゃないよ。自作自演つうのは自作自演だと
ばれないようにやるのが自作自演なわけで。しかも>>275>>274
対するレスでもないし。

やっぱ馬鹿の集まりってのは一味違うねぇ。

279:nobodyさん
05/12/25 23:24:07
この板も早く強制ID制になってほしいものだ


280:nobodyさん
05/12/25 23:45:05
>278
バレバレの自作自演なんて数えられないくらい存在する
今回のも非常に分かりやすいな

>>272=>>274=>>275=>>278


281:nobodyさん
05/12/26 22:51:19
そういえばここって強制IDじゃないんだよね。
さすが過疎板の代名詞

282:nobodyさん
05/12/29 14:08:54 W4CzIrpP
お初で失礼します。
PHPプログラマですが既存のシステムを大人の事情でASP5.0 on IIS5.0への移行を行うことになりました。

だいたい言語仕様やアーキテクチャの仕様を調べたのですが
一つ大きな問題に直面してしまいました。
ASPsessionIDをクッキーでなく、自動でform内にhiddenで埋め込むことはできるのでしょうか?
(GETで?の後につけてはいけない)
クッキーoffでもセッションを使えるようにしなければならないというのが当初からの命題の一つなのです


283:nobodyさん
05/12/29 17:35:44 BZLcPqC6
>>282
普通にできる
hiddenで埋め込んだ値をPOST送信 か Session 変数を使えばOk

284:nobodyさん
05/12/29 21:03:25
>282 ちなみに ASP3.0 な

285:nobodyさん
05/12/29 22:37:15
ん?
Session変数はクッキーで渡されたIDをキーにサーバの値を使うものだから
クッキーレスでは使えないぞ。

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

でも実のところHiddenの防御力はCookie以下だということは
認識しておいた方がいいかと。
書き換える気になればquerystringを書き換えるのと大して変わらないので。

286:nobodyさん
05/12/30 01:45:46
>>285
確かに純粋にはくクッキーの一つだけど
でもIEのクッキー設定を無視するからクッキーoff環境でも問題ないよ

287:nobodyさん
05/12/30 03:26:10
IEならどうにでもなるんだけどね…
クッキーレスを要求するっていうことはすなわち
それ以外のブラウザでも使えるようにって要件ではないかと思われる

288:nobodyさん
06/01/01 19:02:30 Vw/N6o5Y
ディレクトリ再帰検索の降順表示について質問します。

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

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

どなたかアドバイスお願いします。

289:nobodyさん
06/01/01 19:04:32 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>

290:nobodyさん
06/01/01 19:06:01 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
%>

291:nobodyさん
06/01/01 19:06:50 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

%>

292:288
06/01/01 19:09:55 Vw/N6o5Y
忠実に再現しようと思ったら、長くなってしまいました・・・orz
長文失礼しました。よろしくお願いします。

293:nobodyさん
06/01/01 22:50:12
>>288
速さのためって言ってるけど。
毎回全フォルダ情報をクライアントに送りつけるっていうのは
フォルダ階層の数によるがかなり重くなると思う。

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

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

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

294:288
06/01/02 20:27:19 N1rmW7hx
>>293
アドバイス有難うございます。

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

>>俺は子への展開時にAjax使って取り直し、みたいな形で実装したことがある。
クリック時のフォルダ展開は言い忘れてしまいましたが、画面遷移しないという要件なので、
確かにAjaxが適していると思います。XMLHttpRequestで試してみます。ヒント有難うございました。

295:nobodyさん
06/01/03 16:07:07
>>294
>>①は再帰的に格納するということでしょうか?

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

こんな感じでやりたいことが出来るのでは?ということ。

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

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

よろしくお願いします。

297:nobodyさん
06/01/04 13:36:35
>>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

298:nobodyさん
06/01/04 22:17:29
DBがPostgreSQLだったらOFFSETとLIMITを使えば簡単。
SQLServerでも取得するデータ列にユニークなキーがあれば
TOPとnot existsを駆使することで、結構負荷軽めに
レコードセットの中間だけ取り出す事が可能だよ

299:nobodyさん
06/01/05 12:18:06
なるほど。

300:nobodyさん
06/01/05 16:56:41 KdflC/KD
VBScriptで、自分のPC(Win2000)をサーバーにして作業をしています。(この書き方おかしかったらすみません。)

Excelの既存ファイルを開き、データ書き込み、別名で保存ということをしています。
その時、作業フォルダとは別に、Cの直下に、作業フォルダ、開いたファイル、保存したファイルの3つのショートカットができるんですけど、なぜなんでしょうか?仕様ですか?

301:nobodyさん
06/01/05 18:09:35
>>300
そんなショートカット出来たこと無いぞ

302:nobodyさん
06/01/05 18:41:21
>>300
Officeいくつ?
あと、ASP越しにやってるの?それともWSH越し?

303:nobodyさん
06/01/05 22:34:33
>>296 
開始位置の格納
ページカウンタの格納
DBオープン
rs.AbsolutePosition = 開始位置

[ループ開始]

 開始位置=開始位置+1
 If 開始位置 = (ページカウンタ * 1ページあたり表示件数 + 1) Then ループ抜ける

[ループ終了]
ページングのためのリンクを表示

304:nobodyさん
06/01/05 23:21:52
>>303
それは普通の方法だから重いのでは?

305:nobodyさん
06/01/06 00:10:03
しかし全体の行数がものすごく多かったりする場合は
ひょっとするとReadForwardOnlyのレコードセットで空読みするより
素直にランダムアクセス可能なレコードセットを使う方が
結果としては速くなるやも知れんな。

やってみたこと無いから分からんけど。

306:300
06/01/06 09:03:43 1e+7Xjcv
レスありがとうございます。
>>301
そうですか・・・。
>>302
officeは2000です。
後半意味がわかりませんが(すみません)、wsfは使っていないので、ASP越しだと思います。
後、マクロを含んだExcelだと別名保存ができません。
参照設定なども必要なのでしょうか?

以下、ソースです。
<%
Dim XL
Dim XB
Dim OpenFile
Dim SaveFile
Set XL = Server.CreateObject("Excel.Application")
Err.Clear
On Error Resume Next
OpenFile = Server.MapPath("./TEST.xls")
SaveFile = Server.MapPath("./TEST1.xls")
XL.Visible = False
Set XB = XL.Application.Workbooks.Open(OpenFile)
XB.ActiveSheet.Cells(1,1).value = "AAAA"
XB.ActiveSheet.Cells(1,2).value = "BBBB"
XB.Application.DisplayAlerts = False
XB.SaveAS SaveFile
XL.Quit
Set XB = Nothing
Set XL = Nothing
%>

307:nobodyさん
06/01/06 21:31:41
>>306
ASPでOfficeとかShellとかのユーザ的なCOMを操作するのはMSのサポート外。
つまり何が起こっても文句は言えないということ。

ASP越しだとカレントディレクトリや%TEMP%変数の概念がShellと全然違うから
C:\直下に一時ファイルができたり削除されなかったりするのは仕様かもね。

308:300
06/01/07 10:51:35
>>307
ふむぅ・・・。そうなんですか。
最終的には、DBからデータを取得して、Excel開いてデータを書き込んで、
マクロ起動してグラフの表示ってことをしたいのですが、前途多難ですな。
ファイルを開くのや、マクロの起動のサンプルを拾って、アレンジしながら試しているのですが、
全く思ったように動いてくれません。

309:nobodyさん
06/01/07 14:31:30
>>308
ASPでグラフ表示はVMLを使うのが普通

310:nobodyさん
06/01/08 06:31:53
>>309
そうでもないよ

311:バッカーです ◆KeuXjwWDdE
06/01/08 20:30:42
棒グラフなら単純に画像の横や縦の設定だけでいいんじゃないの?
ビローンと伸ばすかギュッと縮めるかっつーことで

312:300
06/01/09 08:51:14
スキルアップもかねてということで、Excel操作ができるようにと、提示されているのです。
VMLって、IEのバージョン限定でしか使えないんじゃないですか?

313:nobodyさん
06/01/09 10:49:02
>>312
確かにIE4より前だと使えないが、
そんな古い環境じゃDHTMLもろくに使えないし、
今更そこまでサポートせんでもいいだろ。

ちなみにExcel.Applicationをサーバで使うのは
今ではMSの完全サポート外、むしろ止めとけって事になってるので
そこは気をつけておいた方がいいぞ。
元々Excelはクライアントアプリだから意味合い上ライセンス的にも微妙だし。
MS的にはOffice Web Componentでも使え、って話だ。

314:nobodyさん
06/01/09 14:55:35
>>312
ASP使ってグラフ表示っていうと、イントラでしょ?
イントラならIE限定でいいんじゃね?

それにIE以外だとxlsファイルもブラウザで直接見れないんじゃなかったっけ?

315:nobodyさん
06/01/14 16:04:01
>>300
SVG使えばいんでない。
とりあえず、IEでもプラグイン入れてれば見れるし。


316:nobodyさん
06/01/14 16:04:19 6WSzNtEC
ASPのIf文の条件として
varDateというある日付の入った変数を
システム日付プラス1日より過去のものはtrueという
条件をつくりたいのですが、どう記述すればよろしいでしょうか?
よろしくお願い致します。

317:nobodyさん
06/01/15 00:22:44
DateAdd(d,1,Date()) > varDate

318:nobodyさん
06/01/16 16:00:20
質問です。

Response.ContentType="application/vnd.ms-excel"
Response.AddHeader "Content-Disposition" , " attachment; filename= data.csv"

Response.Write csvdata

この様な感じで、csvファイルをクライアントに保存させようとしています。
100件程度なら問題ないのですが、数千単位のレコードになると保存のダイアログは出るものの、
ダウンロードのファイル名もaspのファイル名になってしまい、保存できません。

何か対処方法はありますでしょうか?



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch