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のファイル名になってしまい、保存できません。
何か対処方法はありますでしょうか?
319:nobodyさん
06/01/16 16:01:10 UBjBFy/D
320:nobodyさん
06/01/16 17:08:53 rp3amqOf
つContent-lngth
321:nobodyさん
06/01/16 21:02:51
>>318
何故にexcel?
322:nobodyさん
06/01/17 14:00:57
ASP.NET(aspx)ではなく、既存のASP(asp)の『Server.createObject』を
使用して呼出すことの出来るDLL(COM)を、.NET2003で作成したいのですが、
どうしても上手くいきません...orz
~試したこと~
①C# ⇒ クラスライブラリで作成 ⇒ 「COM の相互運用機能に登録」オプションをtrue ⇒ DLL完成
②試しに、VBSから①で作ったDLLを呼出して見る(createObject) ⇒ 成功
③ASPから①で作ったDLLを呼出して見る(Server.createObject) ⇒ 失敗..orz
ファイルまたはアセンブリ名 ClassLibrary5、またはその依存関係の 1 つが見つかりませんでした。
VBSから呼出せるってことは、レジストリに
登録されてるってことだと思う。(実際に登録されている)
なんで、ASPからだと使えない?
323:nobodyさん
06/01/17 14:42:30
>>322
IUSR_XXXがDLLに対するアクセス権を持っていない……とか。
324:322
06/01/17 15:03:56
DLLをC:\winnt\system32の下へ持っていったら...orz...動いた...
なんで?レジストリには、DLLのファイルパスまで
あったし、VBSも動いてた!!
全然、わからない!!
325:nobodyさん
06/01/17 17:18:24
つ 自分のアカウントの PATH とIISサービスの PATH が同じとは限らない。
というか違う。
326:nobodyさん
06/01/17 21:05:04 4JhQoD7f
aspのソースって暗号化出来るんでしょうか?
dbの接続のパスとか書いてるそのままのソースを置くのは、
ちょっとアレかな~と思いまして。
327:nobodyさん
06/01/17 21:14:51
>>326
スクリプト エンコーダ
URLリンク(www.microsoft.com)
328:nobodyさん
06/01/17 23:07:48
DBの接続文字列とかはレジストリに登録してそれをCOMあたりで呼び込むのがいいと思う。
(レジストリってVBScriptから直接呼び出せたっけ?)
329:nobodyさん
06/01/18 02:57:39
WshShell.RegRead()使えば読める……はず。そいや使ったことないや。
330:nobodyさん
06/01/18 18:40:54
>>326
このあたりをどぞ。ASP.NETとありますがASPでも適用できるかと。
Building Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication
Storing Database Connection Strings Securely
URLリンク(msdn.microsoft.com)
・Encrypted with DPAPI
・Clear text in Web.config or Machine.config
・UDL files
・Custom text files
・Registry
・COM+ catalog
331:638
06/01/21 13:32:23 GsEUkG9T
ASPにてシステム日付の3日前の日付を取得したいのですが、
下記のようにすると変数varAに 38735 という数字が入ってきます。
システム日付の1日後のvarBには 2006/01/22 と入るのですが、
x日前の日付の取得はどうすればよろしいのでしょうか?
varA =DateDiff("d", 3, date)
varB =DateAdd("d", 1, date)
332:nobodyさん
06/01/21 14:49:32
>>331
varB =DateAdd("d", -3, date
333:nobodyさん
06/01/21 18:49:21 AIj0kho+
326に便乗質問
俺はweb.configに置いてるけどweb.configはサーバーだけで動くとか何とか
呼んだ気がするから安心してたけどひょっとして安心ではない?
334:638
06/01/21 19:00:34 GsEUkG9T
>>332
なるほど、DateAddを使うですね。
ありがとうございました。
335:nobodyさん
06/01/22 01:05:17
>>333
ここはASP.NETスレじゃないよ><
336:nobodyさん
06/01/27 14:12:25
ASP → ASP.NET より
ASP → PHPのほうが、乗換えとして、自分の好みに合っている気ガス
337:nobodyさん
06/01/27 21:52:21
そんなあなたにpythonですよ
338:nobodyさん
06/01/29 22:28:57
ASPにはhtmlエスケープの関数ってありますか?
昔どこかのサイトで見かけた気がするのですが
失念してしまいました…。
339:nobodyさん
06/01/29 23:25:38
>>338
JScriptならできる
340:nobodyさん
06/01/30 00:12:50
>>339
レスありがとうございます。
VBscriptで書いてしまったので、
replaceでしこしこやってみますorz
341:nobodyさん
06/01/30 03:19:35
>>338-340
Server.HTMLEncode() のことじゃないの?
そうならVBScriptでも使えるけど。
342:nobodyさん
06/02/01 18:59:54 Im+A4ONK
かなり行き詰ってて助けてください。
Framework2.0(C#)ベースで作ったDLLをASPで動かしたいのですが、
XPのiis上ではうまく動くのに2003Serverのiisではクリエイトで失敗します。
Set hoge = Server.CreateObject("hoge.hoge")←ここで失敗
両環境下でRegAsmで登録しFrameworkのバージョンも同一です。
なぜ動かないか分からないのですが、
どなたかご教授お願いします。
343:nobodyさん
06/02/01 21:22:49
>>342 エラー メッセージ プリーズ
344:342
06/02/01 21:45:57
>>343
Server オブジェクト エラー 'ASP 0177 : 80070002'
Server.CreateObject に失敗しました
です。
権限とかの問題でしょうか?
345:nobodyさん
06/02/01 22:08:21
>>342 %SystemRoot%は、両方のOSで同じ名前?
346:342
06/02/01 22:18:40
>>345
2003サーバの%SystemRoot%が標準で:/windows/system32なら同じにしてます。
347:345
06/02/01 22:21:21
>>342 違ってたらゴメンネ。海外のサイトで同じような質問していて
I suspect this is because the DLL is not in a particular location that the CLR is looking
when you create the object. Try copying the DLL to C:\Winnt\System32 or C:\Windows\System32
depending upon whether you have Windows 2000 or Windows XP Professional / 2003 Server.
って答えてたから。
348:342
06/02/01 22:33:26
>>347
確認しましたらC:\windows\system32にDLLをおいてTLBを作成しているので
ほかに原因があると思います。
もしかしてRegasmで登録しているのが原因でしょうか?
349:342
06/02/02 02:42:30 bVYIWBsA
どうしても解決しないので一旦age
350:nobodyさん
06/02/03 02:47:28
ASPでIPアドレスの比較(?)をしたいと考えています。
IPマスクで192.168.1.0/24のような形式のもの(20項目程度)と$ipを比較して含まれていれば真を返すにはどのようにすればいいのでしょうか?
鯖はWinXP ProのIIS(.net Framework無し)、開発環境はVS.net 2005 ExpressEditionです。
351:nobodyさん
06/02/03 20:14:27
>>350
正規表現?
352:バッカーです ◆KeuXjwWDdE
06/02/03 20:44:49
範囲の問題じゃないの?
353:nobodyさん
06/02/04 01:23:48
まんま24ビットの整数にしてAnd取る……って話ぢゃないのか。
354:nobodyさん
06/02/04 08:16:33
.NETは知らんがVBSじゃオーバーフローしたような記憶が
>24ビットの整数にしてAnd取る
355:nobodyさん
06/02/04 10:46:54
>>350
IPが連続してるなら正規表現、
バラバラであれば配列にして比較するか、DBを使ってるならSQLだな。
356:nobodyさん
06/02/04 16:29:50
VBSでもちゃんとCLngすれば24bitも大丈夫だよ
357:350
06/02/06 02:39:19
レスありがとうございます。
$ipになってましたがipのミスですorz
検査してくれるような便利な関数があれば良いなぁと考えてたのですが無いのですか・・・。
やはり/で2つに分けて地道にホゲホゲさせないと駄目なのでしょうか?
358:nobodyさん
06/02/06 10:00:27 kQjET4Ig
文字列から検索対象文字がいくつあるかカウントする関数はありますでしょうか?
strTest という変数からchar(10)の改行文字のカウントをしたいのですが。
359:nobodyさん
06/02/06 21:24:02
俺なら地道にFunctionステートメントで、InStr()関数と
For~Next文でループさせて数えるけどね
360:nobodyさん
06/02/06 22:22:25
>>350
ipaddrとipnetの間で比較する流れを完全に想像だけで書いてみるw
function conv(ip)
Dim ipary
ipary = split(ip,".")
conv = clng(ipary(0)*256^3) + clng(ipary(1)*256^2) + clng(ipary(2)*256) + clng(ipary(3))
end function
function bitmask(masklng)
Dim mask
mask = clng(0)
for i = 31 to 31-masklng
mask = mask + clng(2^i)
next
bitmask = clng(mask)
end function
function check(ipaddr,ipnet)
ary = split(ipnet,"/")
netaddr = conv(ary(0))
mask = bitmask(ary(1))
if (clng(netaddr) = clng(conv(ipaddr)) and clng(mask)) then
check = true
else
check = false
end if
end function
clngの挟み方は適当。多分使いすぎ。
bitmask辺りは99%の確率でバグってる悪寒w
361:360
06/02/06 22:24:50
ミスった!
bitmaskのforはstep -1 でw
362:nobodyさん
06/02/07 09:32:11 o795fuVl
レコードセットで、[列名]hoge1,hoge2,hoge3,hoge4.....hogeXXの項目のデータを取ってきて、
このデータを変数に格納したいのですが、
今のところ、
hoge1 = objRS("hoge1")
hoge2 = objRS("hoge2")
hoge3 = objRS("hoge3")
と言ったかなり格好悪いやり方をしています。
これを、スマートにするにはどうしたらいいのでしょうか。
ちなみに
1回目のレコードセットはhoge1~hoge20
2個目のレコードセットはhoge1~hoge25
と言ったように、
項目数も変わってくるんです。
363:nobodyさん
06/02/07 20:18:23
>>362
GetRows
364:nobodyさん
06/02/07 20:41:38
ファイルアップで質問です。
レンタルサーバでファイルアップフォームを
作成しているのですが、BASP21が使えません。
(インストールに管理者権限が必要?)
VBScriptのデフォルトではファイルアップは
できないのでしょうか?
もし、他のモジュールを使えば可能なのであれば、
ファイルをコピーするだけで動くようなものを
教えていただけると助かります。
よろしくおねがいします。
365:nobodyさん
06/02/07 21:19:33
>>364
ADO.Streamを駆使すれば可能。
来週まで待てば俺作のをupってもいいが…
URLリンク(blog.so-net.ne.jp)
こんなのがあったので参考になるんちゃうか。
366:nobodyさん
06/02/08 00:09:09
>>364
↓には、昔お世話になったことあるよ。
URLリンク(web.archive.org)
367:364
06/02/08 16:53:03
>>365,366
親切に回答いただきありがとうございます!
>>366 さんのサンプルを作ったところ、
うまくアップロードできたようです。
ただ、これを使うと通常の値
<input type="text"> などはどうやってとるのかが
知識不足のため、ソースを見てもわかりませんでした…
Upload("textbox") とかでもダメっぽいですね。。
368:nobodyさん
06/02/08 20:31:59
>>367
multipart/form-dataでUPしてBinaryReadで受け取ると
バイト単位の処理になるから、テキストフォームとかと同時にやるとなると面倒くさそうだね。
駄目文字の処理とかも必要になるし。
369:nobodyさん
06/02/09 02:36:56 v3Lm1+ha
Basp21のSendMailメソッドで質問があります。
上記メソッドを使用してメールを送信すると、
指定したアドレスに2重送信されてしまい困っています。
メールを送信する直前にDBへ履歴を登録しているので、
前回送信時刻と現在(今回送信)時刻の差(datediff)が60秒以内であれば、
メールを送信しないような処理をしているのですが無駄に終わっています…。
何かいい回避策があるようでしたら教えてください。
370:364=367
06/02/09 13:24:29
>>368
やはり受け取ったバイナリを手動でとらないとダメなんですね…ありがとうございます。
ファイルアップとテキストフォームの組み合わせは引き続き調べてみます。
371:バッカーです ◆KeuXjwWDdE
06/02/09 18:39:04
>>369
アルゴリズムに問題があるのではないかと
372:nobodyさん
06/02/09 21:01:53
VBScriptで17桁の整数を扱う方法ってある?
通貨型じゃ15桁+小数部4桁だよね?
373:nobodyさん
06/02/09 22:59:46
京の位に達するのか。
ASPでどんな計算をしようとしているんだw
文字列でいいんじゃねーのけ?
374:nobodyさん
06/02/10 00:55:41
>>369
その手の質問はBASPの掲示板でしたほうがいいと思うよ
375:nobodyさん
06/02/10 01:31:16 gbK8yDLA
Ajaxっぽい非同期通信を組み込んでいて詰まってしまいました。
クライアント側
httpObj.open("GET","gettext.asp?sendData="+Data,true);
httpObj.send(null); //これで送って
サーバー側
getData = Request.QueryString("sendData") 'これで受け取る○
これはうまくいったのですが、送るデータ量が大きくなるとオーバーフローエラー
がでてしまいました。そこでPOSTで送ることにしました。
ところが受け取りがまったく反応してくれません。
クライアント側
httpObj.open("POST","gettext.asp",true);
httpObj.send("sendData="+Data); //これで送って
サーバー側
getData = Request.Form("sendData") 'これで受け取る×
getData = Request.QueryString("sendData") 'これで受け取る×
解決策がありましたらよろしくお願いいたします。
376:nobodyさん
06/02/10 06:35:31
>>336
URLリンク(asp2php.naken.cc)
ダウンロードしたら解凍してできたexeファイルの上に、
**.aspのソースをドラッグドロップするだけですよ
377:nobodyさん
06/02/10 19:40:27
>>375
send前に
httpObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
をつけるのをマジおすすめ
378:sage
06/02/10 23:36:15 gbK8yDLA
>>377
無事動きました!ありがとうございます!
379:nobodyさん
06/02/11 03:19:38
win2003鯖(web Edition)+IIS6.0+VBscript+BASP21でメール送信をしようとしています。
PHPのmail()関数を使ってメールの送信ができたのでSMTPには問題なさそうです。
ところがVBscriptからだとSMTPで認証を要求されます。
この場合、実行ユーザが違うから権限が違うのかな、と思ったのですが、
Win鯖にうとくどのサービスがどのユーザで実行するか調べたいのですが、
どこで見れるのか教えていただけますでしょうか
また、ググってみたところ、2003web Editionにはユーザ管理機能はない、
URLリンク(www.fmmc.or.jp)~fm/nwts/w2003s/ch1/1_1_3.html
なんて書いてあるんですがまじですか?
380:nobodyさん
06/02/11 07:14:57
>>379
なんだか全然スレ違いくさいが。
>win2003鯖(web Edition)+IIS6.0+VBscript+BASP21でメール送信をしようとしています。
2003ServerにSMTPが動いていて、同じサーバ上からそれを使って送信、
ということでOK?
>VBscriptからだとSMTPで認証を要求されます。
どんな認証が要求される?
ダイアログなどを詳しく。
>この場合、実行ユーザが違うから権限が違うのかな、と思ったのですが、
>Win鯖にうとくどのサービスがどのユーザで実行するか調べたいのですが、
SMTPサービスの実行権限を調べたいなら
コントロールパネル→管理ツール→サービス
>2003web Editionにはユーザ管理機能はない
ActiveDirectoryが無いというだけで、サーバ内でのユーザ管理はもちろんある
381:nobodyさん
06/02/11 15:21:43
>>380
全然見当違いなところのエラーでした。
BASP21でメールサーバをIPで指定していたんですが、
ループバック(127.0.0.1)で指定したら(゚д゚)ウマーでした
おそらくSMTPのリレー関係の設定の問題でした。
ごめんなさい
382:nobodyさん
06/02/15 14:02:53
FileSystemObjectで、仮想ディレクトリ内にファイルをコピーしたり削除する場合、
そのフォルダに対して、
「インターネットゲストアカウント PC名\IUSR_PC名」のユーザーアカウントに、
フルアクセスの権限を与えています。
セキュリティーの観点から、こういうのは危ないんでしょうか?
383:nobodyさん
06/02/15 21:10:42 lSEl6laF
.
.
Dim GetDate
for i=startYear to lastYear
GetDate = obj.xxxx
i = i + 1
next
.
.
このような形で年度別にGetDateに配列でデータを格納しています。
この年度別に作られる配列を一つの配列変数に代入したいのですが、
どうすればよろしいでしょうか?
384:nobodyさん
06/02/15 22:15:43
>>382
フルアクセスは実行権限含むからまずい
読み取り+書き込み、がいいかと。
>>383
>>GetDate = obj.xxxx
にループ変数iが絡んでいないのだが?
あと
>>年度別に作られる配列を一つの配列変数に代入したい
言わんとしてる事はなんとなくは分かるが
やりたいことをもう少し具体的かつ厳密に。
385:nobodyさん
06/02/16 01:51:09 joFVC4f3
ASPをApacheで動かしたい。
何かよい手はないかな?
386:nobodyさん
06/02/16 07:33:17
>>385
Apache:ASP
387:nobodyさん
06/02/17 16:12:51
画像アップロード板みたいなのを作ってるんですが、
データベース部分に、画像のアドレスや、その他情報を書き込み、
画像はBASP21を使いFTPでアップロードしようとしています。
普通なら、トランザクションを開始して、レコードを書き込んで、
ファイルもアップロードしてからコミットという考えだと思うんですが、
webのシステムの場合、ファイルのアップロードのような時間のかかる処理を、
トランザクション内に入れないほうが良いのでしょうか?
webの開発は始めてなので「どうなんだろう??」と悩んでしまい、、、
388:nobodyさん
06/02/17 16:21:15
>>387
アップロードされるファイルサイズによるが、
普通はアップロードが完了してからDBに書き込むと思うぞ。
あと、BASP21はFTPじゃなくてHTTPのアップロードだと思う。
389:nobodyさん
06/02/17 17:08:21
>>388
ファイルの名前をDBのIDと関連付けて登録したかったので、
DB→ファイルのアップロードと考えてました。
アップロード→DBとするなら、
もう1個別に採番用テーブルを作ってそれをファイル名とIDにする感じですかね?
390:nobodyさん
06/02/17 17:57:05
>>389
> ファイルの名前をDBのIDと関連付けて登録したかった
それなら
UP用TEMPフォルダへアップロード
↓
ファイルチェック
↓
DBへ登録&ID取得
↓
正式なフォルダに移動&リネーム
が一番かな。
何にせよ、ファイルアップロードはクライアント側でアップロードをミスることが多いし、
ファイルのチェックとかもしなきゃいけないでしょ?
391:nobodyさん
06/02/18 15:30:31
>>390
それだと最後の移動&リネームが失敗した時、
再度DBのデータを削除なり更新しに行くハメにならん?
392:nobodyさん
06/02/18 16:16:18
>>391
一連の流れにDBのトランザクション使えばよくね?
393:nobodyさん
06/02/18 16:31:42
>>392
>>387のいうファイルのアップロードの大きさが分からないが、
何百メガとかだと、DBのトランザクション使うのはマズいんでないかい?
少なくともロックは排他で、何回もリトライしてください~の仕様にするしかないか。
394:nobodyさん
06/02/18 20:37:36
IDはIDENTITYで取ればいいんだよ
データ空で一行INSERTした後その新キーを取得してcommit、
その後そのキーで行ロックしてファイルデータをupdateしてcommitしてやればいい。
ファイルデータupdate時に完了フラグも更新すれば
途中で失敗したものとも区別がつく。
つーか既にASPの話題じゃねえな
395:nobodyさん
06/02/18 20:39:32
UP用TEMPフォルダへアップロード
↓
ファイルチェック
↓
DBトランザクション開始
↓
DBへ登録&ID取得
↓
正式なフォルダに移動&リネーム
↓
DBトランザクション終了(commit/rollback)
がいいかもな
396:nobodyさん
06/02/25 00:08:08 5p0RQZcL
dimで宣言した二次元配列をOnClickでコールしたJavaScript関数内で使用する方法を教えてください。
397:nobodyさん
06/02/25 06:20:25
>>396
JavaScriptのコードに展開すればいいじゃん
398:nobodyさん
06/02/25 10:43:55
>>396
a(m,n) → b[m][n]
<script>
<%
Response.Write("var b=new Array("&(UBound(a,1)+1)&");")
For i=LBound(a,1) to UBound(a,1)
Response.Write("b["&i&"]=new Array("&UBound(a,2)+1&");")
For j=LBound(a,2) to UBound(a,2)
Response.Write("b["&i&"]["&j&"]="&a(i,j)&";")
Next
Next
%>
</script>
399:396
06/03/01 05:59:02 /i7BGAMo
>>398
JavaScript関数内でa(m,n)が使用できないのですが...
400:nobodyさん
06/03/01 11:35:16 e/ZVjBAD
getFolderメソッドであるフォルダのファイル名を全部取得します。
ファイル名には規則性があり、数値で1から連番です。
For Each objwk in objFOL.Files
'ファイル名を配列に入れる
ReDim Preserve arrAllFileName(i)
arrAllFileName(i) = ( objWK.Name )
i = i + 1
Next
として取得していますが、
1 2 3 6 7 22 27 と取得できるはずなのに、
配列の要素は
1 2 22 27 3 6 7 となり、
BASP21のSortメソッドを使ってものの順番は変わりません。
ファイル作成時間によってソートされているのではないかと
試してみましたが違うようです。
大変恐縮ですが、ソートする方法をご教授いただけませんでしょうか。
何卒よろしくお願いいたします。」
401:400
06/03/01 11:46:02 e/ZVjBAD
追記;要素を入れるときに要素にCIntしても結果は変わりませんでした。
402:400
06/03/01 12:20:50 e/ZVjBAD
すいません。自己解決しました。
数値型がだめなら、文字型だろ! と決まった桁数に0を補完するようにしました。
例) 1 → 0001 11 →0011
403:nobodyさん
06/03/01 18:51:48
もともと
>>1 2 3 6 7 22 27 と取得できるはずなのに、
ここだよね
XP以降のExplorerならば確かに初期状態だとそうなるけど
ファイル名って文字列だからね。
ソートすると
>>1 2 22 27 3 6 7 となり、
で正しいわけだよ
404:nobodyさん
06/03/02 22:33:46
>>399
サーバーサイドのa(m,n)の値ををクライアントサイドのjavascriptのb[m][n]に引き渡してる
405:nobodyさん
06/03/03 13:53:37
一応過去ログも見てみたのですが、見当たらなかったので質問させてください。
ASP(VBScript)@IIS5.1、OSは2000ServerとXPです。
単純にデーターベース(ADO OBDC)からデータを読み出してResponse.Writeで表示させているだけなのですが
メモ型のフィールドに入力した値がうまく表示できないのです。
入力されているデータ(mdb)を直接Acessで編集してフィールドの方をテキスト型に変更するとうまく表示されます
ASPの方でdbから読み出した値がNULLか空かそれ以外かを先に判定させて、
"それ以外"の場合のみ
Response.Write [dbの値] & "<br>"
と書き出すようにしているのですが。いざ実行すると
<br>
としか出力されない状況です。
通常なら表示されて当たり前じゃないかと思うのですが、どこかIIS等の設定がおかしくなっているのでしょうか?
406:nobodyさん
06/03/03 23:00:10
>>405
NULLだったらどう動くようにしてるの?
407:nobodyさん
06/03/04 00:17:11
>>405
つ【vbCrLf】
408:405
06/03/06 10:13:00
>>406
if文で分岐させているのですが、NULL値の場合は
Response.Write "NULL値です"
と表示するようにしています。
>>405
<br>の代わりにvbCrLfを使えばいいということですか?
お二方レスしていただいたのですが、実はついさっき自己解決してしまいました。
dbの値を直接If文の判定式に書いたり、Response.Writeで直接使用していたのが問題のようでした。
一度他の適当な変数を作成してそれに代入してから使用すると、正常に判定と出力をすることができました。
お騒がせしてすみません^^;
409:nobodyさん
06/03/06 23:03:11
まさかとは思うが
If なんとかかんとか = Null Then
とかやってないよな。
410:405
06/03/22 17:47:30
>>409
亀レスだけど
If IsNull(変数) Then または If Not IsNull(変数) Then
ってやってた
411:nobodyさん
06/03/26 07:43:17 /latXqRh
質問です。
メールフォームの送信を.aspでやるときに、送信者側のファイル添付は可能でしょうか?
mailer.addattachmentメソッドがあるようなんですが、そのまま使ってもファイルは添付されずに、送信者のローカルPCのファイルへのパスが送られてくるだけなんですけど。
これってもしかして、一旦uploadscript.aspなんかでサーバーへアップロード保存して、サーバー側に保存されたファイルを添付させるという、2段階手続きじゃないとムリなんですか?
その場合、送信するメールフォームと対になるサーバー側の画像ファイルとの関連づけはどのようにするのか悩んでるんですが、何かアドバイス有りましたらよろしくお願いします。
412:nobodyさん
06/03/26 12:38:36
>>411
mailer.addattachment ってなんてあったっけ?
413:nobodyさん
06/03/26 15:08:37
ServerObjects社製のコンポーネントみたいね
URLリンク(www.serverobjects.com)
このあたりのExampleとか見るとサーバー側にあるファイルを添付するメソッドじゃないかと思う
URLリンク(www.bizclasshosting.com)
BASP21あれば要らないよーな
414:nobodyさん
06/03/26 17:42:32 /latXqRh
>>413
おっしゃるとおり、サーバー側にあるファイルを添付するメソッドなので、サーバーに添付されるファイルをアップロードした後、添付送信という手続きをふまなければならないみたいです。
ただ、一つのメール送信フォームに、この手続きをどうやって組み込むのか四苦八苦してます。
具体的には、ファイルのアップロードは、
BFORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="uploadscript.asp">
で、処理側の.aspコマンドファイルはSet Uploadというメソッドでサーバー上の任意のフォルダへアップロード、
そして、メールフォームの送信は、
<form action="aspmailform.asp" method="post">
で、処理側.aspには、
Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
というコマンドでメール送信という状態なのですが、これらを一つの送信ボタンで出来ないものか悩んでいます。
上記の、aspmailform.aspとuploadscript.aspを一つにして併記してみても機能しないようです(多分、やり方が悪いのかも?)
さらに、addattachmentメソッドはサーバー側のフルパスで指定しなければならないので、送信者のローカルPCのファイルパスを拾って関連づけるのも不可能なような気がするのですが。
というかんじで、困っています。
ASP21というのは、どのような環境で動作可能なのかもう一つ理解していないんですが。
SendMailではなく、ASPMailしかインストールされていないサーバー環境でも動作可能なのでしょうか?
もし可能であれば使ってみようと思います。
415:nobodyさん
06/03/26 17:45:46 /latXqRh
上記訂正、
BFORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="uploadscript.asp">
↓
<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="uploadscript.asp">
です、すみません。
416:nobodyさん
06/03/26 21:54:41
SMTPsvg.Mailerは使ったことないからわからないけどBASP21使うとこんなかんじ
チェックしてないんでバグあるかもしれんけど
------------送信側
<html><body>
<form action="fileuptomail.asp" enctype="multipart/form-data" method="post">
From: <input type="text" name="mailFrom"><br>
To: <input type="text" name="mailTo"><br>
Subject:<input type="text" name="mailSubj"><br>
Body: <textarea cols="40" rows="10" name="mailBody"></textarea><br>
File:<input type="file" name="file"><br>
<input type=SUBMIT name=UPLOAD>
</form></body></html>
------------受信側(fileuptomail.asp)
<%
Set bobj=Server.CreateObject("BASP21")
TEMP=Server.MapPath("/temp/")&"\tempfile.tmp"' 一時保存ファイル
SMTPname="*.*.*.*"' SMTPサーバーのIP
' FileSave
a=Request.TotalBytes
b=Request.BinaryRead(a)
f=bobj.FormFileName(b,"file")
fsize=bobj.FormFileSize(b,"file")
filename=Mid(f,InStrRev(f,"\")+1)
l=bobj.FormSaveAs(b,"file",TEMP)
msg = bobj.SendMail(SMTPname,bobj.Form(b,"mailTo"),bobj.Form(b,"mailFrom"),bobj.Form(b,"mailSubj"),bobj.Form(b,"mailBody"),TEMP&"|"&filename)
%>
417:nobodyさん
06/03/28 11:21:21
とりあえずaspのシステム作るなら、basp21は突っ込んどくオイラ。
なんだかんだで、永い間使ってて安心して使える。
418:nobodyさん
06/03/28 13:00:23
WinCEでの開発なんで自力でbasp21っぽいの作ってるオイラ
バグだらけで不安になりながら使ってる
419:nobodyさん
06/04/10 20:06:46 3UIEjnKE
下記ソースは5年ぐらい前に作ったんですが、またこれが必要になったので
バックアップから引っ張り出してIISに貼り付けましたが動きませんでした。
以前は動いたのに。
現在の動作は、VBS中にExlを書いてもスルーされて
次のプログラムに行ってしまいます。
どこを直せば動くようになるんでしょうか。
よろしくお願いします。
テスト環境はWinXPproです。
セキュリティパッチは全て当ててます。
動くようになれば2003鯖に実装予定です。
Sub Exl
Dim ExcelApp, ExlFile
Set ExcelApp = CreateObject("Excel.Application")
ExcelApp.visible = True
ExlFile="D:/asp/files/temp.xls"
ExcelApp.DisplayAlerts = False
ExcelApp.Workbooks.open(ExlFile)
ExcelApp.Sheets("page1").Select
ExcelApp.ActiveSheet.Range("A1").value="<%= Year(Now()) %>" & " 年 "
ExcelApp.ActiveSheet.PrintPreview
Excelapp.Quit
Set ExcelApp = Nothing
End Sub
420:nobodyさん
06/04/10 20:48:18
これ、ASPで動かすんなら全体が<% %>で囲まれるから
ExcelApp.ActiveSheet.Range("A1").value="<%= Year(Now()) %>" & " 年 "
はおかしいと思うんだが
421:70
06/04/10 21:57:23 w8+tUl+V
>>420
すみません、一部記述が抜けてました
subとend subだけが<% %>で囲ってこんな感じです。
<%
Sub Exl
%>
Dim ExcelApp, ExlFile
Set ExcelApp = CreateObject("Excel.Application")
ExcelApp.visible = True
ExlFile="D:/asp/files/temp.xls"
ExcelApp.DisplayAlerts = False
ExcelApp.Workbooks.open(ExlFile)
ExcelApp.Sheets("page1").Select
ExcelApp.ActiveSheet.Range("A1").value="<%= Year(Now()) %>" & " 年 "
ExcelApp.ActiveSheet.PrintPreview
Excelapp.Quit
Set ExcelApp = Nothing
<%
End Sub
%>
422:nobodyさん
06/04/10 22:24:01
>>421
IE上でExcelのCOMを動かそうとしてる??
423:421
06/04/10 22:28:02 3UIEjnKE
>>422
はい、そうです
この方法はよくないんでしょうか?
424:nobodyさん
06/04/10 22:37:16
>>423
今のIEじゃローカル上のファイルを操作するのは
セキュリティ的に無理だと思う
425:422
06/04/10 22:49:35 w8+tUl+V
>>424
では、サーバー側に一時的なファイルを作成してそれをクライアント側で
ダウンロードする仕組みにするには、どの様なコードを書けばよいでしょうか。
サンプルコードがあるサイトをご存知でしたら教えてください。
お願いします。
426:nobodyさん
06/04/10 23:13:55
自分のPCにExcel入ってないから試せないんだがこんな感じかなぁ
<%
Sub Exl
Dim ExcelApp, ExlFile, Filename, bobj ,b
Set ExcelApp = Server.CreateObject("Excel.Application")
ExcelApp.visible = True
ExlFile="D:/asp/files/temp.xls"
Filename="temp.xls"
ExcelApp.DisplayAlerts = False
ExcelApp.Workbooks.open(ExlFile)
ExcelApp.Sheets("page1").Select
ExcelApp.ActiveSheet.Range("A1").value= Year(Now()) & " 年 "
ExcelApp.ActiveSheet.PrintPreview
Excelapp.Quit
Set ExcelApp = Nothing
Response.ContentType = "application/octet-stream;name=" & Filename
Response.AddHeader "Content-Disposition","attachment;filename=" & Filename
Set bobj = Server.CreateObject("BASP21")
b = bobj.BinaryRead(ExlFile)
Set bobj = Nothing
Response.AddHeader "Content-Length", ubound(b) + 1
Response.BinaryWrite bydata
End Sub
%>
427:nobodyさん
06/04/10 23:15:06
あ、ごめん
× Response.BinaryWrite bydata
○ Response.BinaryWrite b
428:425
06/04/10 23:17:23 3UIEjnKE
>>426
ありがとうございます。
明日試してみます
429:nobodyさん
06/04/11 01:16:54
鯖側でExcelオートメーションは非推奨
URLリンク(support.microsoft.com)
やるならこっちかな
URLリンク(support.microsoft.com)
URLリンク(support.microsoft.com)
430:425
06/04/11 07:27:09 j7JR4Ohz
>>429
目的の動作が出来ました、ありがとうございました。
431:nobodyさん
06/04/14 21:34:06 D01n0ua1
XPproで動いてたASPを2003鯖に入れたらページが見つかりません
とかなって表示できません。
XPで動いてたんでスクリプトには問題ないと思うんですが
IISの問題でしょうか?
どこを直せばよいでしょうか?
432:nobodyさん
06/04/14 21:47:20 D01n0ua1
ためしに自分で作った仮想ディレクトリーにdefault.aspを
配置しましたが、Directory Listing Deniedとかなって表示できません。どうすればよいでようか?
助けてください。
433:nobodyさん
06/04/14 22:36:40
>>432
既定のドキュメント
434:432
06/04/14 22:58:23 D01n0ua1
WebサービスでASPを許可したらいけました」
435:nobodyさん
06/04/15 10:40:23 GTWKBHgT
Fname="D:/asp/DB.mdb"
DBF="Driver={Microsoft Access Driver (*.mdb)};User ID=;Password=12345; DBQ=" & Fname
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open DBF
上記コードでXPproのIISでは正常に動きますが、2003鯖ではこんなエラーになってしまいます。
Microsoft OLE DB Provider for ODBC Drivers エラー '80004005'
[Microsoft][ODBC Microsoft Access Driver]一般エラー レジストリ キー 'Temporary (volatile) Jet DSN for process 0x9ac Thread 0xad0 DBC 0x22a1f94 Jet' を開くことができません。
レジストリをいじらずに動くようにするにはどうすればよいでしょうか?
また、システムにODBCデータソースを追加する以外の方法で別のやり方あったら教えてください。
436:nobodyさん
06/04/15 11:05:26
>>435
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver]一般エラー レジストリ キー 'Temporary (volatile) Jet DSN for process 0xe9c Thread 0xa74 DBC 0x2bc0b4 Jet' を開くことができません。
Accessにパスワードが設定されている場合に発生します。
437:nobodyさん
06/04/15 11:10:18
>>435
今時mdbでそんな方法で接続してる奴いねよ
Microsoft.Jet.OLEDB.4.0 で接続しろよ
438:435
06/04/15 11:21:55 GTWKBHgT
>>436
パスワードを解除したらできました。
ありがとうございます。
439:435
06/04/15 11:28:34 GTWKBHgT
>>437
ああ、古いASP引っ張り出したんであれだったけど
これに直しました。
DBF = "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"User ID=;Password=;Data Source=" & Fname
440:nobodyさん
06/04/15 21:22:35
>438
まぁパスワード解除しちゃったそうだから今更だけど
パスワード付きmdbをJet OLEDB使って開くときは、
ConnectionString/Passwordプロパティにパスワード入れるんじゃなくて
Connection.Properties("Jet OLEDB:Database Password")に突っ込むこと。
441:435
06/04/16 13:54:35 eJrc5hWb
Fname="D:\asp/DB.mdb"
DBFile= "Provider=Microsoft.Jet.OLEDB.4.0;User ID=;Password=;Data Source=" & Fname
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open DBFile
Set RS = server.CreateObject("adodb.recordset")
RS.Open "SELECT * FROM main WHERE id=" & request("id") & " and pass=" & request("pass") & ";",ConnadOpenStatic, adLockOptimistic
RS("aaa")=Request("aaa")
RS("bbb")=Request("bbb")
RS.update
RS.closeset
RS=nothing
Conn.closeset
Conn=nothing
上記更新コードを実行すると、
ADODB.Recordset エラー '800a0bb9'
引数が間違った型、許容範囲外、または競合しています。
というエラーになってしまいます。
どこを直せばよろしいでしょうか。
お願いします。
442:435
06/04/16 17:50:24 eJrc5hWb
解決しました。失礼しました。
443:nobodyさん
06/04/18 18:02:27
435は解決したとみせかけて実は解決していなかった
だから質問をコピペし、別の板、もしくは別のスレで書き込み答えを得ようとしたのか?
444:nobodyさん
06/04/19 17:14:37
ASP.netやり始めて勉強してるんだけど、asp関係の板ってこんなに過疎ってるとは思わなかった。
いろいろ勉強してるんですが、なかなかおもしろいのになぁ。
SQL2005が2000と比較して結構強力になってるっぽいし、ASP.netもいろいろおもしろい。
勉強し始めて1週間ぐらいだけど、5年前手書きでがりがり書いてたASPとは全然違う。
いまObjectDataSourceにDataSetを渡して、データバインドコントロールでいろいろ表示させてるけど、
これは結構使えるかもって思った。次の開発はasp.netでやってみようかなぁ。
445:nobodyさん
06/04/21 08:06:46 2wM3++cG
ASP.netを開発するにはどんなツールが必要ですか?
446:nobodyさん
06/04/21 12:15:40
>>445
ここのアプリケーション開発基礎が詳しい
URLリンク(www.microsoft.com)
まぁ、いまであれば、Visual Web Developer 2005 Express Editionと
SQLServer2005ExpressEdition with Advanced Servicesで無料で開発できる
447:nobodyさん
06/04/22 05:00:11 KZQOiwti
ツールを使わないで作るASPでsendmailみたいなプログラム作れないでしょうか?
cgiでSMTPを使って出来たのだからありそうだけどなかなか見つかりません。
よろしくお願いします。
448:447
06/04/22 05:11:37 KZQOiwti
SMTP鯖を直接叩いてメールを送るソースお願いします。
449:447
06/04/22 07:52:46 IlbM7gzP
URLリンク(homepage2.nifty.com)
今これ試してみたけど
こんなエラーになりました。
どこを直せばよいでしょうか、お願いします。
-----
サーバーによって 1 つまたは複数の受信者アドレスが拒否されました。サーバーからの応答は次のとおりです。550 5.7.1 Unable to relay for
-----
450:nobodyさん
06/04/22 11:28:12
>>449
試してみたがソースに問題はなさそう
鯖がそのメアドに送れないって言ってるんでそちらを調べてみて
URLリンク(www.google.co.jp)
451:nobodyさん
06/04/22 12:30:44
>>449
こんなのMSであるんだな。初めて知った。
でもこれみると、POP Before SMTPやSMTP Authには対応してない気がするのは、
漏れだけかな・・・
となると、まず認証関係を確かめる必要がある。
次はスパムされちゃう恐れがあるので、そのSmtpを運営してるプロバイダを使用してる
ユーザだけとか、企業だとIPアドレス等とか、いろいろ制限されててメール送信して
くれない可能性があるね。
452:447
06/04/22 13:47:10 IlbM7gzP
ちなみにこれがCGIでSMTPを叩いてメール送信するソースですが
これをASP用に変えられないでしょうか。
お願いします。
use Net::SMTP;
$smtp = Net::SMTP->new($domain); #SMTPサーバ
$smtp->mail($mail); #送信元の指定
$smtp->to($to); #宛先の指定
# データ部の組み立て
$smtp->data();
$smtp->datasend("To:$to<$to>\n"); #Toヘッダ
$smtp->datasend("Subject:$kenmei\n"); #件名
$smtp->datasend("\n");
$smtp->datasend("テスト\n");
$smtp->dataend();
$smtp->quit;
453:nobodyさん
06/04/22 16:06:29
ツール使わないっていってんのに、おもいっきりモジュールつかってるんですが。
use Net::SMTP;
これが許されるならBASP21を素直に使えよ。
454:nobodyさん
06/04/23 01:14:01
ラジオボックスを複数個用意して、いずれかが選択された時に出力する部分を入れ替える、というのは可能でしょうか。
たとえば、
<form name="sample">
<input type="radio" name="test" value="1" checked>
<input type="radio" name="test" value="2">
<input type="radio" name="test" value="3">
</form>
<%@ Language=VBScript %>
<% If document.sample.test(1).checked = true Then %>
ラジオボタンの1が選択された時に表示される内容<br>
<% Else If document.sample.test(2).checked = true Then %>
ラジオボタンの2が選択された時に表示される内容<br>
~~
こういった感じのものを作りたいと思っていますが、どうも上手くいきません。
よろしくお願いします。
455:nobodyさん
06/04/23 02:19:41
>>454
可能
普通にクラスのメソッドで、ポストされたラジオボタンの値に従って
処理をわければいいだけだと思われ。
456:454
06/04/23 03:41:00
POSTで同ページにアクションを送る、という方法ではなく、ラジオボタンを
押された時に表示を切り替えれたら、と思っています。
ラジオボックスのonClickプロパティでどうのこうの…という方法を試して
みましたが、どうもエラーが出てしまいます。
ソースのサンプルみたいなものがあれば嬉しいのですが、見つからず…。