全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1108
推到 Plurk!
推到 Facebook!

Access voiolation at address 問題

答題得分者是:st33chen
tas52332
一般會員


發表:23
回覆:24
積分:9
註冊:2002-07-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-11-01 15:06:42 IP:59.124.xxx.xxx 訂閱

各位好,使用 Adoquery 內的 Sql 來編入 Sql Script ,再存檔時會出現,一連串的下列錯誤,

Access voiolation at address 4070f228 in modile 'vclado50.bpl' read of address 0000003c

不知如何解??請教各位!!
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-01 16:57:59 IP:211.72.xxx.xxx 訂閱
若無程式碼, 大概無人能幫您回答此問題!
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-11-01 17:54:25 IP:220.141.xxx.xxx 訂閱
若是您用的是Delphi5的話,它對於Ado的部分有更新套件,要去更新,否則會出現問題。
如果不是的話,可能您的原始檔案是D5,現在用新的版本編譯,找不到該舊的Bpl,試著將
project -> Option -> package -> Build with runtime pageages 勾拿掉再重新編譯。
------
努力會更接近成功
tas52332
一般會員


發表:23
回覆:24
積分:9
註冊:2002-07-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-11-04 17:57:25 IP:59.124.xxx.xxx 訂閱
補上 我下的 SQL 

SELECT a.* ,(select aDay from Detail where Detail.NO=a.No) as dd from Master a
where a.No=:aNO 只要加 where 這段就不行??


後來我改成

SELECT a.* ,b.aDay as dd from Master a left join Detail on Detail.no=a.no
where a.No=:aNO

就可??
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-11-05 08:55:39 IP:122.116.xxx.xxx 未訂閱
您好,

不知道您用哪種 db
我在 oracle, mysql 測
您的第一式, 不管含不含 where 子句,
1. 如果 select aDay from Detail where Detail.NO=a.No 只有一筆, ok
2. 如果 select aDay from Detail where Detail.NO=a.No 不只一筆, 會報錯(錯誤訊息類似 : 子查詢回傳不只一筆)
第二式是 ok 的

通常, master-detail 模式是
master 筆數少(例如 訂單主檔存每筆訂單),
detail 筆數比較多(例如 訂單明細檔存每筆訂單的每個項目)
所以會有第一式的結果

如果您要問一二式的差別, 我的想法是,
第一式是在指定一個資料表(table) 的 欄位 (fields) 的組合關係, 必須是一比一取
依您的例子, 解釋是
從 master 中取出符合條件的資料的所有欄位, 而每筆資料要再加一個從 detail 取得的日期欄位.

第二式是在指定 二個資料表 (tables) 的資料錄(records)組合關係, 是用排列組合的方式讀取資料錄
差別在於 from 子句中的 table 數.
(sql 句的筆數決定於 from 及 where 子句, 而不在 select 子句)

不知我的表達能否讓您了解我的想法.
其他大大高人說不定會有更清楚或更正確的說法.

這是依您所提的 sql 句做回答
如果可以, 描述一下您要做成 那個 sql 句的用途
說不定會討論出不一樣的 sql 句, 解決您的真正問題, 而不是一個 sql 語句的問題.

參考一下啦




===================引 用 tas52332 文 章===================
補上 我下的 SQL

SELECT a.* ,(select aDay from Detail where Detail.NO=a.No) as dd from Master a
where a.No=:aNO 只要加 where 這段就不行??


後來我改成

SELECT a.* ,b.aDay as dd from Master a left join Detail on Detail.no=a.no
where a.No=:aNO

就可??
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2008-11-05 08:58:30, 註解 無‧
st33chen 重新編輯於 2008-11-05 09:03:52, 註解 無‧
tas52332
一般會員


發表:23
回覆:24
積分:9
註冊:2002-07-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-11-07 22:23:07 IP:59.105.xxx.xxx 訂閱
    感謝回答??我是用 ms-sql ,此sql 在 Sql Quear Analyzer 跑都可且答案
是同的,可能是因我用 Master Detail 誤導各位,其實他們是一對一的組合,
我的問題是為何如此下只要給 where 會出現那錯誤??
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-11-07 23:36:59 IP:122.116.xxx.xxx 未訂閱
您知道 加了 where 後會錯誤的真正錯誤訊息嗎?

建議您
1. 用 try
except
on e:exception do begin
showmessage(e:message);
end;
end;
看能否看到錯誤訊息.

2. 把 sql.text copy 後貼到 sql gui tools 中, 應該可以得到真正的錯誤訊息

(有訊息才好解問題)

我的判斷還是一對多的問題, 也請您確定資料真是一對一.

------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2008-11-07 23:41:25, 註解 無‧
系統時間:2024-05-06 18:12:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!