• ベストアンサー

VBScriptの関数化

私のしたいことは、 (1)リンクボタンを押すと、 (2)csvファイルを作成し、 (3)作成したcsvファイルのダウンロードを行う というものです。 そこで、以下のようなプログラムを作成したのですが、上手くいきません。 まず、リンクボタンは <% Response.Write "[<a href=" & FileName & " onclick='set()'>保存</a> ]" %> 次に、関数化したプログラムは、 <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> <!-- sub set() Dim i, fs,csv,flnm flnm=<% = Request.Form("FileName") %> Set fs = CreateObject("Scripting.FileSystemObject") Set csv = fs.CreateTextFile(flnm,True) '項目名を書き込む 'Serverからデータを取得 strSQL="select * from dtTbl " Set rs = db.DbCreateDynaset(strSQL,0) rs.MoveFirst 'データがなくなるまで繰り返す Do Until rs.EOF=True dtSQL="" For i=0 to 17 dtSQL = dtSQL & rs.fields.item(i).value & "," Next dtSQL=dtSQL & rs.fields.item(18).value 'ファイルに書き込む csv.WriteLine(dtSQL) '次の行を読み込む rs.MoveNext Loop 'ファイルを閉じる csv.Close end sub --> </SCRIPT> このプログラムは関数にしなければ正常に動作していました。 簡単なJavaScriptの関数を変わりにおいてみたところ、 そのプログラムは正常に動作したので、onclickは使えると思うのですが・・・ どこが間違っているのでしょうか? ちなみにこの他の部分も、VBScriptで作成しています。 今日中に仕上げなければならないので、困っています。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hequil
  • ベストアンサー率65% (242/372)
回答No.1

根本的にクライアントサイドとサーバーサイドを一緒に考えていらっしゃるようで・・・(^^;   onclick="set()" で   <SCRIPT LANGUAGE="VBScript" RUNAT="Server">   </SCRIPT> 内にある関数は呼び出せません。 クライアントサイドから呼び出せるのは(基本的には)クライアントサイドの関数だけです。

mybigbaby
質問者

お礼

基本的なところがわかっていなかったようです。 まだまだ勉強がたりませんね。 結局、この部分は関数化するのはやめました(^。^; 別の方法で完成させました。 でも、別の関数を作成することができました。 ありがとうございました。

mybigbaby
質問者

補足

では、 <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> ではなく、 <SCRIPT LANGUAGE="VBScript"> とすればよいのでしょうか? しかし、 (1)行3:識別子がありません。 (2)行63:構文エラーです。 と、2つのエラーがでてきてしまいます。 関数にしなければ動作するのですが、 関数にする時には、プログラムの書き方も違ってくるのでしょうか?     

その他の回答 (1)

  • msystem
  • ベストアンサー率42% (79/186)
回答No.2

私も似たような質問を以前ここでし、皆さんのおかげで解決しました。(質問番号114813) ただ違うのは(2)csvファイルを作成の部分は、ファイルを作成せずにそのままcsvファイルをダウロードさせる方法です。 以下その方法です。 リンク元のリンク部分 <a href="csvdown.asp?FILENAME=<%Response.Write FileName%>">保存</a> csvdown.aspの先頭(<body>や<html>などはすべてとる) <% Response.ContentType = "text/csv" Response.AddHeader "Content-Disposition","filename=" & Request("FILENAME") 'CSVデータを作成 Response.Write "1,2,3" & vbNewLine Response.Write "2,3,4" & vbNewLine %> ただ方法か違うため「VBScriptの関数化」の回答にはなってませんね

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=114813
mybigbaby
質問者

お礼

回答ありがとうございました。 結局、昨日なんとか完成しました!! こういう方法もあるのですね。 これからの参考にさせていただきます(^。^)

関連するQ&A