喫茶XRAYトップページ
[6741]
思いこみ
返信
削除
2013/2/26 (火) 17:43:11
Mr.XRAY
ちょっとスレッドが切れていて読みにくいかも知れませんが,
[ADOでdbfファイルを読み込むとエラー]
http://
www.
freeml.
com/
delphi-
users/
3014/
latest
http://
www.
freeml.
com/
delphi-
users/
3017/
latest
http://
www.
freeml.
com/
delphi-
users/
3020/
1
http://
www.
freeml.
com/
delphi-
users/
3020/
2
http://
www.
freeml.
com/
delphi-
users/
3020/
3
最初の質問で,コードが示されています.
そこで,このコード内でエラーが発生すると勝手に思い込んでしまいました.
違うんですね.
手順が一切書いてないし,どこでエラーが発生するかも書いていませんが,
おそらく,EXE の起動時だと思われます.
(質問された方が提示したコードは,EXE 起動時には実行されていない)
UAC だとか,MDAC だとか,JET 4.0 の関係か,いろいろ想像を巡らせて
しまいました.
最初の思い込みが曲者でした.
ADO 関係のサンプルを掲載している関係上,
「えっ!? そんなことはないだろう」
と思いましたね.冷や汗もんでした.
えっ!? 本人からはまだ,何も反応がないから違うかもって.
そんなこはないと思います.確信です.ハイ.
[6742]
Re:思いこみ
返信
削除
2013/2/26 (火) 20:59:49
Mr.XRAY
何か,エラーなしに動作するようになったみたいです.
理由も原因も分かりませんが,私の推測に間違いはないでしょう.多分.
話題が変な方向に行っています.
ともかく,記事の修正はしなくていいようです.よかった!!
[6743]
恐れ入谷の鬼子母神
返信
削除
2013/2/27 (水) 23:01:13
Mr.XRAY
> えっ!? 本人からはまだ,何も反応がないから違うかもって.
> そんなこはないと思います.確信です.ハイ.
あったようです.... (- -);
[ADOでdbfファイルを読み込むとエラー]
http://
www.
freeml.
com/
delphi-
users/
3049
『恐れ入谷の鬼子母神,びっくり下谷の広徳寺』
というのもありますけどね.
[6744]
名探偵コナンの推理
返信
削除
2013/2/28 (木) 12:58:53
Mr.XRAY
結構サスペンスドラマっていうのが好きなんですが,
サスペンスドラマは,最後に,必ずと言っていいほど,
何故か推理に至った過程を説明しますよね.
実際には,そんなことはないと思いますが,
参考までに,興味がある方のために (えっ!? そんな人いない? )
http://
www.
freeml.
com/
delphi-
users/
3047
のように推理したかを説明しておきます.
まず,以下で,
≪これは実際の文字列を見てみない事には判断できないかもですね。≫
とレスしています.
http://
www.
freeml.
com/
delphi-
users/
3018
質問者からの反応は以下のものでした.
http://
www.
freeml.
com/
delphi-
users/
3020
ところが,ここには,肝心の [Data Source=[DatabasePathの文字列]の
具体的な内容がありません.
パスが存在しないのを調べたいのに,これでは確認できません.
その後も,確認を促すレスをしたのてすが,秘密らしく,教えてくれません.
しかも,質問者の接続文字列の設定は,
ADOC.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source='+DatabasePath+
';Extended Properties=dBASE IV';
ADOQ.ConnectionString := ADOC.ConnectionString;
となっています.どう考えても矛盾しています.
そこで,これではラチがあかないので,テスト用のプロジェクトを
作成しました.
http://
mrxray.
on.
coocan.
jp/
Others/
ADO_Conn
ectDBF.
htm
このサンプルには,テスト用の .dbf ファイルを添付しています.
もし,これで,Delphi, BDE がインストールされていないコンピュータで
動作すれは,動作するということです.
更に,この中の
ShowMessage(ADOC.ConnectionString);
で接続文字列を確認してもらうことにしました.
結果は,Delphi, BDE がインストールしていない PC でも
データベースを開いてデータを表示することができました.
質問者のデータベースファイルも開くことができました.
http://
www.
freeml.
com/
delphi-
users/
3027
http://
www.
freeml.
com/
delphi-
users/
3032
ところが,接続文字列については,
≪不思議なことに?前メールのとおり長くなっていました。≫
というのです.
http://
www.
freeml.
com/
delphi-
users/
3026
そんな馬鹿なことはありません.私の作成したプロジェクトには,そんな
接続文字列なんか設定していません.そんなハズないのです,
質問者のプロジェクトで,私のサンプル内の接続コードを使用しているのかも ?
そこで,
接続の前に,接続文字列を空文字にするコード
ADOC.ConnectionString := EmptyStr; //これを追加
を提案しました.
この時点で,この質問者は,接続文字列を ShowMessage で表示して取得して
いるのではないらしい,と,やっと気付きました.
つまり,この提案は,無意味でした.
これは,オブジェクト・インスペクタ,つまり設計時の値なんですね.
これ以外は,そんな長い接続文字列の設定がされる状況は考えられせん.
したがって,実行時には,ユニット内に書かれたデータベース接続用のコード
は実行されていないのです.
この実行時の接続用のコードが実行されないのですから,この中の
ShowMessage が実行されることはありません.
EXE の実行開始時には,オブジェクト・インスペクタの設定が実行されます.
これは,フォーム生成時,OnCreate イベントが発生する前です.
だからこそ,ボタン等のサイズが,オブジェクト・インスペクタでの設定値で
表示されるわけです.
さて,では一体,質問者は,長い接続文字列を,どこでどう
調べたのでしょうか? 謎は残りますが,ここでは追究しないことにします.
≪これで接続できれば,これらが「犯人」です.≫
というレスをしましたが,この犯人には,黒幕がいます.
その黒幕というのは,質問者です.ハイ.
重要なことは,「うまくいかないプロジェクト」ではなく,
確実に動作するサンプルで確認後,うまくいかない自分のプロジェクトとは,
どう違うのかを調べることですね.
そのためにも,当サイトのサンプルでは,「設計時画面」とういうのを,
基本的に掲載しています(宣伝と自慢です.ハイ)
[6745]
飛んでも8分,歩いて10分
返信
削除
2013/2/28 (木) 13:28:38
Mr.XRAY
何故,この ML の話題をしつこく書いているのかといいますと,
当サイトには ADO 関係のサンプルがあるからなのです.
これらのサンプルが,Delphi がインストールされていない,あるいは,
BDE がインストールされていない環境では動作しない
と思われたくないからです.
単なる「意地」です.ハイ.
だって,一所懸命書いた記事,サンプルが実際には使えないなんて,
『飛んでも8分,歩いて10分』
(トンデモハップン,アルイテジュップン)です.
INCM/CMT
Cyclamen v3.82