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

==ASP==

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。 NGNG
ASP について語るスレ
062862102/06/06 23:43ID:HZspSnk8
すいません、お騒がせしました。
失礼します。
0629nobodyさん02/06/07 10:37ID:lJP0VltF
ASP というプログラミング言語では、オブジェクト指向の機能はあるんですか
0630anonymous02/06/07 23:13ID:6y0JL1CY
ASPでVBS使ってたけど、つまらん。
超古典的だよ。やってて楽しいの?
0631nobodyさん02/06/07 23:29ID:???
>>630
うっさい禿げ。死ね。


0632nobodyさん02/06/07 23:52ID:???
>>630 激しく氏ね

おまえanonemouse って打ち間違ったことあるだろ
0633anonymous02/06/08 00:01ID:sAeg6oVC
おまえ禿作やったことあるだろ > 631

おまえは、もっとタイプの練習しな > 632
0634nobodyさん02/06/08 08:26ID:ImGHPXP2
>>629
オブジェクト指向に特化した言語仕様というのであれば、
クラスとかは一応使えますってレベルでしょうか。

しかし、それ以前に、自分がオブジェクト指向でプログラムを
設計できることが先かなぁとか思う。
何も、継承やポリモルフィズムに特化したOOP言語の「機能」を使うことが
オブジェクト指向じゃないよなぁって思うんだけどね。

かと言って、ASPがお手軽ツールが故の限界は否定されることではありませぬ。
生産性が高く、よく出来てるなぁとは思いますけどね。
0635nobodyさん02/06/08 08:36ID:???
がいしゅつを承知で書いてるが、ASPでオブジェクト嗜好云々言うのは筋違いだよな。
VBとかでCOM作ってそれを呼べばいいだけの話だし。
もちろんそこまで高度なことしなくても、634の言う通り「お手軽」ツールではあるけどな。
0636nobodyさん02/06/09 00:34ID:???
>>635
COMまでいかんくてもWSCとかいうのがあるよ。
資料が少なすぎるのが痛いとこなんだけれども。
0637nobodyさん02/06/09 03:00ID:???
いやそれ以前の話として、「ASP というプログラミング言語」には誰かツッコミ入れないのか?
0638nobodyさん02/06/09 18:40ID:HYXTi8SF
>>637
入れたいと言えば入れたいが・・・
的確な突っ込みが俺にはできん
頼んだぞ>>637
0639nobodyさん02/06/10 00:07ID:???
>>637
それは「暗黙の了解」ってやつでしょう。
言葉の意味が間違って使われることなんてよくあることだし、それが一般化してしまえば、「間違った意味」ではなくなる。
ASPのプログラム=ASPで動くVBScriptやJScriptのプログラム、でいいんじゃないかな。
064063702/06/10 02:18ID:???
別に「ASP=プログラミング言語」は一般化していない罠
0641名無しさん@そうだドライブへ行こう02/06/10 10:54ID:i5c2WU+N
For j=1 to k
ランダムID作成
DB Open
IDがダブってないかチェック
存在しなければ、登録
存在したら、k = k + 1
Next

って、してるんだけど、ダブったID分だけ、少なくなる
なんで?
0642 ◆IUSR/9/M 02/06/10 12:51ID:???
>>641
何が少なくなるのかわからん。
0643nobodyさん02/06/10 21:13ID:pExJBB0b
それ以前にロジックおかしいだろ
OPEN何回するんだ
ForNext使うような処理か
ランダムにする必要があるのか
0644nobodyさん02/06/11 02:01ID:???
>>641
For Next の To の部分(k)をループの中でいじるなよ。
Do Loop にして If で Exit Do せよ。
0645即答お願い!02/06/11 05:46ID:SR7p/BHH
ASPの仕事が来たんだけど、引き受けようかどうか迷ってます。
Windowsプログラム経験は0で、ほとんどがUNIXでの開発でした。
スキルはPerl,PHP,PostgreSQL,MySQLって感じなんだけど、大丈夫かな?

ASPって簡単?
0646help me!!02/06/11 06:01ID:Eq2bnklk
VBScriptのウィンドウハンドルってどうやったら取得できます?
0647nobodyさん02/06/11 06:20ID:81ebp4mZ
646 そんなもんない
0648nobodyさん02/06/11 06:25ID:???
>>645 それで金になるならやれ
他にもっといい仕事あるならそっちにいけ
ASP自体はそんなに難しくはない
0649 ◆IUSR/9/M 02/06/11 08:39ID:???
>>643
ソースの部分ぜんぜん見てなんだ...

コネクション何回も開いてるし、Forの中でイランとこいじってるし。
一番大きいIDを拾って、+1するんじゃだめなんか?
それかAccessならオートナンバーにするとか。
0650649 ◆IUSR/9/M 02/06/11 08:49ID:???
あう、後ろのほうは641へのレス。
065164102/06/11 10:03ID:o4wPDLWo
えらく、叩かれてる
一応、書いてなかったけどコネクションは閉じてるんです。
でも、ForNextの数字をいじったのがいけないみたいですね・・・。
炒ってきます
0652 ◆IUSR/9/M 02/06/11 10:10ID:gBpO67K9
>>651
別に叩く気は無かったが。
それに閉じてないのが問題じゃなくて...

ふつうはコネクション開くのはForループの前でいいっしょ。
で、ループから抜けたら閉じると。

でもこの処理ではあまりに効率悪いです。
649で書いたこと検討汁。
0653 ◆IUSR/9/M 02/06/11 10:42ID:???
>>645
VBSでASPはかなりお手軽。
PHP、Perlが出来れば楽勝と思われ。
JScriptのほうは知らん。

それにしてもこのスレの人ってASP関係以外でどんなスキル持っているの?
0654教えてください02/06/11 10:46ID:???
確認メッセージ表示後、SQLを実行したいんです。

<div align="center"><a href="kekka.asp?mode=dlt&key=<%=RS("T_SEQ")%>" onClick="Delete_OnClick()">削除</a></div>
------------------------------------------------------------
と書いて
削除押したら自分自身(kekka.asp)を呼び出して
確認メッセージを以下のVBScriptで確認します。
------------------------------------------------------------
Function Delete_OnClick()
Dlt_OnClick= False
lngRC = MsgBox(""本当に 削除してもいいですか?" ,vbOKCANCEL,"削除フォーム")
If lngRC = vbOK Then
MsgBox "ok"
Dlt_OnClick= True
else
Dlt_OnClick= False

Exit Function
end if
End Function
------------------------------------------------------------
流れは
「削除」のリンククリック→確認メッセージ表示→
OKならSQL実行、キャンセルならなにもしない

といったようなことしたいのですが上のやり方で
確認メッセージまでは出せたのですが
Request.QueryString("mode") = "dlt"ならSQL実行
というので判断しようとしたんですが
できません。
どうしたらいいでしょうか?
何かいい方法があればよろしくお願いします。
065564102/06/11 12:07ID:o4wPDLWo
652>>
そーですね。実際効率悪いです(オ
やっぱり、炒ってきます
0656 ◆IUSR/9/M 02/06/11 18:18ID:???
炒くな。
もっと煮込め。
0657nobodyさん02/06/11 19:16ID:Lbf3EwoP
IISの仮想ディレクトリのプロパティにある
[アプリケーションの設定|アプリケーション名]
の所のアプリケーションって一体何を意味しているのですか?

あと、実行アクセス権とアプリケーション保護ってのも。
意味がわかりません。

あそこに"アプリケーション"が作成されてなくてもASPは動作するような気がします。
どうしてでしょうか?
0658nobodyさん02/06/11 21:11ID:thQNmmcO
>>657
アプリケーション=global.asa って何か調べてみなされ
0659nobodyさん02/06/11 21:48ID:thQNmmcO
>>654
Function Delete_OnClick()
Dlt_OnClick= False
lngRC = MsgBox(""本当に 削除してもいいですか?" ,vbOKCANCEL,"削除フォーム")
If lngRC = vbOK Then
MsgBox "ok"
Dlt_OnClick= True
else
Dlt_OnClick= False
Exit Function
end if
End Function

Function は Delete_OnClick() なんだろ
なのに戻りがDlt_OnClick とはどういうことだい?
あと、Exit Functionは必要かい?
0660nobodyさん02/06/12 18:09ID:0p8gfwGx
WinMEでASPスクリプトを書く環境はつくれますか?
0661nobodyさん02/06/12 18:30ID:???
>>660
メモ帳で書いてろ
0662nobodyさん02/06/12 18:56ID:???
>>660
Danaで書いてますが何か?
0663nobodyさん02/06/12 21:11ID:jRTSFpK+
>>661 俺もそう思った
ちなみに俺は秀丸
0664nobodyさん02/06/12 23:37ID:???
ちなみに俺はVS.net
0665教えてください02/06/13 03:39ID:???
>>659
お返事ありがとうございます。
判断をQueryStringでしてますが
やっぱりうまくいかないです・・・
066665902/06/13 20:31ID:GAxJ69kX
>>665
<a href="kekka.asp?mode=dlt&key=<%=RS("T_SEQ")%>" onClick="Delete_OnClick()">削除</a>
ところで、こんな書きかたってできるのか?俺が知らないだけか・・・

メッセージが出るなら
If lngRC = vbOK Then
  MsgBox "ok"
  "Delete Sql " ←ここにSQL書けばいいんじゃないの?
  Dlt_OnClick= True
else
  Dlt_OnClick= False
Exit Function

それか
<a href="kekka.asp?mode=dlt&key=<%=RS("T_SEQ")%>">削除</a>
これでkekka.aspのあたまで確認メッセージだして
Noだったらresponse.redirectで戻ってくればいいんじゃない?
0667nobodyさん02/06/13 22:03ID:???
スクリプトを書くだけの環境なら、Windowsじゃなくったってできる。

emacsおすすめ(藁
0668nobodyさん02/06/13 22:08ID:???
>666
それじゃいかんよ。確認ダイアログの表示はクライアントで動いて
いるんだから。次のようにしないとダメだ。

<%
Dim SCRIPTNAME
SCRIPTNAME = Request.ServerVariables.Item("SCRIPT_NAME")

Select Case Request.QueryString.Item("mode")
Case "del"
  call DeleteSQL()
Case Else
  call WriteDoc()
End Select



Sub DeleteSQL()
  'ここでレコードを削除する処理を書く。
  response.Write ("削除しますた")
End Sub

〜〜〜続く〜〜〜
0669nobodyさん02/06/13 22:09ID:???
〜〜〜続き〜〜〜

Sub WriteDoc()
  Dim DelKey
  'ここでDBに接続して削除するレコードのキー
  'を取得する処理を書く。
  DelKey = RS("T_SEQ")
  
'---------Here Documet Start------------%>
<html>
<head>
<script language="JavaScript">
<!--
function Kakunin(){
  res = confirm("本当に削除しますよ?");
  if (res == true)
    window.location.href="<%= SCRIPTNAME %>?mode=del&key=<%= DelKey %>";
}
//-->
</script>
</head>
<body>
<a href="#" onClick="Kakunin();">削除</a>
</body>
</html>
<%'------Here Document End ------------
  
End Sub
%>
0670nobodyさん02/06/13 22:11ID:???
代金はスイス銀行の秘密口座に振り込んでおいてくれ。じゃあ。
0671nobodyさん02/06/13 22:12ID:nCrZQ6cd
時間「10:00」とかがちゃんと入力されたかは
どう判定したらいいですか?
「1000」とかをはじきたいのですが。
よろしくお願いします。
067265902/06/13 22:57ID:GAxJ69kX
>668 フォローさんくす
っていうか・・・ASPスレだよなここ・・・・↑これはどうよ
0673nobodyさん02/06/13 23:32ID:???
>>652
普通はそうなんだがADOでは勝手にコネクションプール作ってくれている罠
0674nobodyさん02/06/14 00:46ID:qFND6rQ7
>>641
どっかでみたような質問だな(w

そしてどっかで回答したぞ(w
0675nobodyさん02/06/14 00:48ID:qFND6rQ7
>>654
これもどっかで回答したなー(w

俺のじゃ動かなかったのかYOヽ(`Д´)ノ
0676nobodyさん02/06/14 00:53ID:qFND6rQ7
>>671
RegExp使うヨロシ
0677nobodyさん02/06/14 08:12ID:???
どういうフォーム変数から受けるのかも書いてないから
適当にこんなのでいいんじゃないの?

Function TimeChk(str)
  str = Replace(str,":",":")
  TimeChk = IsDate(str)
End Function
0678 ◆IUSR/9/M 02/06/14 15:28ID:1+7Gqjw1
>>673
この辺のことよくわかってないんだが、開いたレコードセットの数だけ
コネクション勝手に張られるって事?
0679nobodyさん02/06/14 16:50ID:???
>>678
使い終わったADOコネクションを自動的に使いまわすことで
速度向上をはかるんじゃなかったっけ。
0680 ◆IUSR/9/M 02/06/14 18:05ID:???
>>679
ってことは

Sub Hirakimakuri
Conn.Open strConnection
'何かの処理
Conn.Close
'(★★↑ここは実際にはまだ閉じてないよーん★★)

Conn.Open strConnection
'(★★↑実わ始めっからひらいてるよーん★★)
'何かの処理
Conn.Close
End Sub

ていうことが起こってるの?
この辺のことかなり疎いんだわ。
ちょっと勉強してみるわ。
0681nobodyさん02/06/15 23:18ID:???
IIS+ASP+ACCESSってのは知ってるけど
IIS+ASP+SQLServerはどうなの?

なんかええことある?
0682nobodyさん02/06/15 23:22ID:c7DLdRcN
>681
えらそうにみえる
アクセスは同時接続どうのこうの・・・の制限が・・・云々・・・
0683nobodyさん02/06/15 23:30ID:???
>>682
ありがとう、導入してみます。
ところで、わかりやすいHP紹介してほしいです

CD入れて次へ次へってかんじなのかな
テーブルの作り方は、SQLで作るのかな?
それともドラッグでいいの?
0684nobodyさん02/06/15 23:35ID:c7DLdRcN
こんなんでいいか
http://www.ki.rim.or.jp/~kuro/MSDE/
http://riss.narc.affrc.go.jp/kssys/asp/
0685nobodyさん02/06/15 23:45ID:???
>>684
ASPの書き方は、わかりやすそうだ、どうもです
MSDEってのがいまいちわからんACCESSにネットワーク機能がついてるだけか?

SQLServerをADODBで接続するときは、ASPのコードはACCESSの接続と変更なしと考えてよろしい?
0686nobodyさん02/06/16 00:00ID:/0Let3kQ
provider=XXXなんて書くならそれに合わせて書くだろうな
DSN=XXXなら変更なしと考えていてもほぼOK

↑間違ってたら誰かが突っ込んでくれるだろう
0687nobodyさん02/06/16 23:33ID:vYTgrEdE
こんばんわ。ADOの話が出てきてるので少し質問・・・。
mdbを使っていると、こんなメッセージが出ることがあります。

## [Microsoft][ODBC Microsoft Access Driver]
## '(不明)' は既に使用されているので、使用できませんでした。

[ソース]
Dim Con1, Con2
Set Con1 = Server.CreateObject("ADODB.Connection")
Set Con2 = Server.CreateObject("ADODB.Connection")
Con1.Open DATASOURCE
Con2.Open DATASOURCE '<-エラー

この問題はmdbおよびmdb、aspにIURのフルコントロールを与えれば解決できます
とhttp://support.microsoft.com/default.aspx?scid=kb;JA;q174943に
書いてあり、実際そうなのですが、Webから見えない位置に置くとはいえ、
IUSRにフルコントロールを与えることに何か抵抗を感じるのですが、これは
セキュリティ上問題は無いのでしょうか?
0688nobodyさん02/06/16 23:56ID:???
>>683
何をしたいかによるが、開発する環境と運用する環境が違うのなら
SQLでテーブル作る癖をつけといたほうがいいような。
まあ、SQL Serverはあとからテーブル作成SQLを吐き出せるのだが。

GUIから作るのならEnterprise Managerから作る。
0689nobodyさん02/06/17 00:39ID:???
>>687
セキュリティを気にするならmdbではなくMSDEを使おう
0690 ◆IUSR/9/M 02/06/17 10:48ID:3sfMcnHJ
>>685
MSDE=(SQL Server-Enterprise Manager) * ちょっとデチューン
みたいなもん。
0691nobodyさん02/06/17 16:16ID:???
いい無料のデータベースソフトってありますか?
0692nobodyさん02/06/17 17:07ID:???
>>685
内容による。
特にACCESSの場合は文法やフィールドが微妙に独自仕様なのでSQL文投げてやる
時は要注意。
0693nobodyさん02/06/17 20:30ID:???
MSDEって同時接続5人までじゃなかったっけ?
0694nobodyさん02/06/18 01:22ID:aJVZLNcN
http://www.zdnet.co.jp/help/howto/win/win2000/0007special/complus_vb/chap3/13.html

3) 同時アクセス制限
 同時アクセスの制限はない。ただし,同時接続数が5ユーザーを超えるとパフォーマンスが低下するので,多くの同時アクセスが見込まれる環境では,MSDEではなくSQL Server 7.0を利用すべきである。
 なお,MSDEの接続にあたってClient Access License(CAL)は不要である(ただし,SQL Serverと同時使用する場合には必要となる)。
0695nobodyさん02/06/18 19:21ID:???
ふむむ・・・。
やっぱりMySQLだな・・・。金無いし・・・。
0696nobodyさん02/06/19 16:30ID:crp6hIVv
ファイルシステムオブジェクトのフォルダ削除命令なんですけど時間差攻撃
に参っています。
フォルダを削除した後に同じ名前のフォルダを作り直す処理ですが
フォルダが削除される前に次のSTEPに進んでエラーとなります。
WinXPでテストした時は問題なかったんだけど、NT4で現象が発生してます。

こんなもんなの?

Set fso = Server.CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(wWorkPath & Request.ServerVariables("REMOTE_ADDR")) Then
   fso.DeleteFolder wWorkPath & Request.ServerVariables("REMOTE_ADDR")
End If
fso.CreateFolder wWorkPath & Request.ServerVariables("REMOTE_ADDR")
069769602/06/19 16:42ID:crp6hIVv
ちなみにフォルダの中には数10個の画像ファイル(100〜400kb程度)
が格納されます。
0698名無し02/06/19 17:37ID:RNxca6md
念のために if 〜=true then とちゃんと書いておくとか(適当
0699nobodyさん02/06/19 19:47ID:???
とことでElseってしってる?
070069602/06/19 20:23ID:crp6hIVv
補足しておくと削除ロジックは動いているらしく
エラーが起った後にエクスプローラからフォルダとファイルを監視
していると徐々にファイルが消えていきます 謎!
それも1つのファイルが消えるのに数十秒のラグが発生しています。

もしかして環境がおかしいのか?

0701nobodyさん02/06/19 20:58ID:???
だから〜
If <フォルダが存在している> then
 <フォルダ削除処理>
End If
<新規フォルダ作成処理>
というロジックはおかしいでしょ。削除処理が完了する前に
フォルダ作成処理に突入する可能性があるんだから。
0702nobodyさん02/06/19 21:34ID:XkCkjy5u
NT4.0のPeer web ServicesでASPの勉強しようと思ったですが、
ブラウザからASPファイル見るとタグが表示されて、画面もグレーになってる
ASPファイルとか入れるディレクトリってきまってんの?どこでもいいわけじゃないのん?
それともPWS入れるだけじゃあかんのん?設定がいるとか?
PWSじゃ動かないとか?
0703696じゃあないよ02/06/20 01:30ID:wnM832rE
>>701
え?じゃあ フォルダが削除されるまで空ループがいるってこと?
FileSystemObjectってそんな仕様だっけ??
0704nobodyさん02/06/20 02:01ID:1JHpxVoL
>>702
ASPがインストールされてないかも・・・
0705 ◆IUSR/9/M 02/06/20 09:24ID:su7EC3ei
>>696
漏れもこのソースで試してみた。
フォルダの中に100個のJPGファイルも置いてみたけど、ちゃんと動いたぞ?
サーバに問題があるんで内海?
0706 ◆IUSR/9/M 02/06/20 09:36ID:???
念のため環境も書いておく。

その1
OS : NT4 SP6
CPU : PIII Xeon 700MHz(1MB Cache)×2
Memory : 512MB
HDD : 36GB(10000rpm)×3(RAID5 128MB Cache)

その2
OS : Win2k SP2
CPU : PIII 1.13GHz
Memory : 512MB
HDD : 18GB(10000rpm)×3(RAID5 128MB Cache)
0707696なんですよ02/06/20 10:08ID:rekZtjUL
>>706
NT4とWinXPの違いかと思ったがどうもそうでないようですね。
やはり環境が怪しいみたいです、サーバー再起動できたら検証しなおします。

うちの環境は
正常に稼動するテスト機はPen4のWinXPのPro
おかしな挙動のは業務運用中のサーバーで706の1をグレードダウンした感じです。

現在は以下のコードで無理やり回避中です。

Function funcFileDelete()
wFolderPath = wWorkPath & Request.ServerVariables("REMOTE_ADDR")
Set fso_nd = Server.CreateObject("Scripting.FileSystemObject")
Set fldr_nd = fso_nd.GetFolder(wFolderPath)
For Each files In fldr_nd.Files
files.Delete
Next
End Function

'-----Main Code----
Set fso = Server.CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(wWorkPath & Request.ServerVariables("REMOTE_ADDR")) Then
funcFileDelete
Else
fso.CreateFolder wWorkPath & Request.ServerVariables("REMOTE_ADDR")
End If

0708696なんですよ02/06/20 10:12ID:rekZtjUL
げげげ Spaceが削除されてしまった....
見にくくてスマソ

>>702
Option Pack いれましょう。
http://www.microsoft.com/japan/products/ntserver/option_pack/default.htm
0709nobodyさん02/06/20 15:29ID:ZyXfvRcM
ちょっと初級のしつもんかもしれないけどさ、
access mdbを使ってさ、
たとえばテーブル2つあって、
<基本情報テーブル>ID 名前 性別ID
<性別テーブル>性別ID 性別
こんな感じだとするじゃん。
で、accessでリレーションシップを設定しておくのよ。
とうぜん性別IDでつなぐ。でまあ適当なデータを入力しておくと
するでしょ。

これをさ、asp(IIS5.0、VBScript)からDB接続して、SQL文で
 Set ObjRecSet = Server.CreateObject("ADODB.Recordset")
 SQL = "select * from 基本情報"
 ObjRecSet.Open SQL, ObjConnect
ってやってObjRecSetにセットして
 <% = ObjRS("名前") %>
 <% = ObjRS("性別ID") %>
 <% = ObjRS("性別") %>
ってやると、性別だけでない(ていうかそんなのないってエラーになる)。

たしかにaccessでも、デザイン画面では性別IDしかない。あたりまえだけど。
でも、リレーションシップを設定してるから、データ入力画面では
むしろ性別しかないわけよ(性別IDがない)。
リレーションシップってaccess内でしか使えないの?

ってことは、
 SQL="SELECT * FROM 基本情報テーブル,性別テーブル WHERE 基本情報テーブル.性別ID = 性別テーブル.性別ID"
ってやんなきゃいけないってこと?
それか、このSQL文でクエリをaccessで作っておいて
 SQL="SELECT * FROM 出力クエリ"
ってやってもいけるんだけど、accessでみるとリレーションシップを設定してる上にSQL文いれて作ったクエリだから、
性別が二個になっちゃう。これはちょっとどうかと思うしさ。

なんかいい方法ないかなぁ。
あとほかのDB使ったことないんだけど、リレーションシップってどのDBにも
あるものなの?
071070902/06/20 15:30ID:ZyXfvRcM
ごめんごめん
<% = ObjRS・・・
ってやつ、ObjRecSetのことね
0711702です02/06/20 22:46ID:0yGbDEJb
NT4.0のワークステーションからServerに入れ直してIISいれて、サービスパック
及びオプション入れて、管理マネージャーの既定のWEBサイトの下に雑誌についてたaspサンプルファイル置いた
けど、やっぱ動かないんだけど。
何が足りないですか?スクリプトの実行も許可してるんだけど。
0712nobodyさん02/06/20 23:28ID:T3o97qem
c:\inetpub\wwroot\hoge.asp を開こうとしているに1票
0713nobodyさん02/06/21 01:19ID:HI8FWHcI
>>711
ブラウザのアドレスにコンピュータ名入れてenter押してみそ
aspの紹介画面が出れば動いてるよ。

もしかしてだがネットワークが確率してないとか?
単体で動かしてる? そうならループバックアダプタ入れてネットワークが稼働
してる状態にしませう、ネットワークコンピュータから自分が見えればok。
0714 ◆IUSR/9/M 02/06/21 10:31ID:???
>>709はネタか?ネタだよな?
0715nobodyさん02/06/21 10:54ID:???
>>714
文体からすると煽りの気もするんだが・・・
071670902/06/21 11:02ID:IFsoH9aH
(´-`).。oO(マジなんだけどなー)

ところでローカルでテストしてると、
たまに
ObjConnect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath(dbPath & dbFile)
の行で「エラーが特定できません」のエラーになるんだけどなんで?

なんどかやると通るのよ。謎。
0717 ◆IUSR/9/M 02/06/21 11:42ID:???
>>709
じゃあマヂレスしてみる。

Accessでいうリレーションシップって参照整合性をとるために設定するもので
SQL文とはあんまり関係ない(詳しい人のツッコミきぼんぬ)。

当然プログラム(別にフォームでもレポートでもいいけど)から使うフィールドはSELECT
の後ろに定義されていなければならないはず。

普通は
SELECT 基本情報テーブル,*, 性別テーブル.性別名 FROM 基本情報テーブル,性別テーブル WHERE 基本情報テーブル.性別ID = 性別テーブル.性別ID
あるいは
SELECT 基本情報テーブル,*, 性別テーブル.性別名 FROM 基本情報テーブル INNER JOIN 性別テーブル ON 基本情報テーブル.性別ID = 性別テーブル.性別ID
でいいと思うんだが?

>ObjConnect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath(dbPath & dbFile)

これは俺は知らない。ODBC経由でDBを開くのか?

ちなみに俺の書き方↓
ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & MDBPass & ";Persist Security Info=False"
Conn.Open ConnStr

なんかASPというよりAccessの質問っぽいのでsage。
0718 ◆IUSR/9/M 02/06/21 11:43ID:???
ありゃ。

×基本情報テーブル,*,
   ↓
○基本情報テーブル.*,
071970902/06/21 12:46ID:IFsoH9aH
>>717
どーもです!

なるほど、つまりプログラムからmdb使うときは
リレーションシップは無視していつもどおりSQLを書けって
ことか。

ちなみに俺はどーもINNER JOINが理解しにくいから、
いつも>>717の前者のSQL文を書くんだけど、これって
どっち使ったほうがいいとかあるのかな?

どうしてもINNER JOINを使えっていうならちゃんと勉強してみるんだけど、
別に使わなくてもぜんぜんできるからねぇ。困ったもんよ。

ちなみにのDBオープンは、ODBC経由で開いてるよ。
だめなの?どっかで見たやり方そのまんまだと思うんだけど。

ODBC経由の方法を覚えておけば、ほかのRDBMSでも
そのまま使えるかなぁと思ってさ。どうなん?
0720 ◆IUSR/9/M 02/06/21 14:06ID:???
>>719
何かの記事(何かは忘れた)に直積とる(WHEREでKeyを結びつけるやり方)よりもINNER JOIN句使ったほう
が早いっていうのがあった(SQL Serverの場合)。

それよりも漏れは複雑なSQL文書くときはAccessとかでクエリー作ってそれをこぴぺした物を元にいじって使う
事が多いからINNER JOIN使う。

>ちなみにのDBオープンは、ODBC経由で開いてるよ。
>だめなの?どっかで見たやり方そのまんまだと思うんだけど。

だめだとは言わないがエラーが出るならほかの方法も試してみようとは思わないか?

仕事中カキコsage。
0721 ◆IUSR/9/M 02/06/21 14:32ID:???
仕事一個終わったage
0722nobodyさん02/06/21 14:45ID:/aM6f8Di
JOINを使わない方式だと複雑なSQLでは期待値と結果値が異なります。
0723nobodyさん02/06/21 19:21ID:TlHUu6Iw
ダメというか、MDBならJetエンジンの方が速くない?
誰かベンチマークよろしくw
0724nobodyさん02/06/22 00:16ID:jebv9Dxp
>>716
何度かやると通るのはよくある事。
M$のよいところか悪いところか適当にやって動くのよね。
でも正解はそのうちのどれか。
M$ががんがってテストした方法が一番まともなんだけど
それがどれなのか  とほほ(−−;;
0725 ◆IUSR/9/M 02/06/22 08:34ID:???
720訂正
直積のほうがINNER JOINより速いらしい。
0726nobodyさん02/06/22 23:35ID:IrZz6jEc
アルゴリズムの実行速度を計測したいのですが、どのような方法が
あるのでしょうか。WSHのタイマー関数とか使って自作するのでしょうか。
あとはストレスツールくらいしか思いつかないのですが、これはアクセス時の
オーバーヘッドが発生するのであまり使いたくないです。。
よろしくお願いします。
0727nobodyさん02/06/22 23:55ID:iOfYHM5m
新人に実行速度どのくらい?って聞いたことがある。
「すいません、ちょっと計ってみます」と・・・
片手にアナログ時計を持って・・・・

おまえはネタか・・・・・と思ったことがある
■ このスレッドは過去ログ倉庫に格納されています