討論區快速選單
知識庫快速選單
網路投保旅行平安險 沒有人比Cloudera更了解大數據 Excel也能做到大數據分析?
[ 回上頁 ] [ 討論區發言規則 ]
子表單新增資料
更改我的閱讀文章字型大小
作者 : funnydisk009(funnydisk)
[ 貼文 13 | 人氣 1904 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/26 上午 02:04:14
各位前輩好

想請問,在主表單建立一個指令按鈕,如果在主表單輸入資料後,接著按下指令按鈕
然後在子表單建立一筆新資料,該怎麼做才好

我的想法是,
1.先setFocus到子表單
2.利用GoToControl到子表單
3.GotoRecord找到相對應的欄位
4.使主表單的欄位=子表單的欄位
5.寫入資料

不曉得我的想法有沒有錯,要怎麼寫這一段程式呢,謝謝!!
作者 : kib72377(史努比) Visual Basic卓越專家Assembly優秀好手Access頂尖高手貼文超過1000則
[ 貼文 1455 | 人氣 1891 | 評價 8600 | 評價/貼文 5.91 | 送出評價 31 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/26 上午 08:44:13
>各位前輩好
>想請問,在主表單建立一個指令按鈕,如果在主表單輸入資料後,接著按下指令按鈕
>然後在子表單建立一筆新資料,該怎麼做才好
>我的想法是,
>1.先setFocus到子表單
>2.利用GoToControl到子表單
>3.GotoRecord找到相對應的欄位
>4.使主表單的欄位=子表單的欄位
>5.寫入資料
>不曉得我的想法有沒有錯,要怎麼寫這一段程式呢,謝謝!!

1&2: 有setfocus 就不必 gotocontrol
3.GotoRecord找到相對應的欄位???資料都還沒輸入,哪來的相對應?
如果是要找欄位,直接 欄位 setfocus就好了.
還是你是想跳到新增資料來輸入? 用DoCmd.GoToRecord , , acNewRec

不知你要的是 程式自動幫你在子表單建立一筆完整新資料?
還是 程式幫你跳到新增資料,再由使用者輸入?
作者 : funnydisk009(funnydisk)
[ 貼文 13 | 人氣 1904 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/26 上午 11:07:04
謝謝史努比大大,
不好意思沒有講清楚,我的想法是,在主表單建立新資料
以子表單當作交易的歷史記錄,所以每次在主表單建立資料
後,想要新增一筆相對應欄位的資料到子表單

例如:在主表單有:商品名稱、訂購日期、數量....等
希望新增一筆有商品名稱、訂購日期、數量這三個欄位到子表單
做為歷史的交易記錄

大概是這樣,謝謝您
作者 : kib72377(史努比) Visual Basic卓越專家Assembly優秀好手Access頂尖高手貼文超過1000則
[ 貼文 1455 | 人氣 1891 | 評價 8600 | 評價/貼文 5.91 | 送出評價 31 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/26 上午 11:38:10
用 ADO 或 DAO
OPENRECORD子表單的資料表之後,
再新增資料到資表,
然後再REFRESH 表單和子表單
以下以DAO為例(不含錯誤判斷與處理也不含重複輸入之處理)
DIM RS AS RECORDSET
IF ME.DIRTY THEN ME.REFRESH
SET RS=CURRENTDB.OPENRECORDSET("歷史記錄資料表")
RS.ADDNEW
RS("商品名稱")=ME![商品名稱]
RS("訂購日期")=ME![訂購日期]
RS("數量")=ME![數量]
RS.UPDATE
RS.CLOSE
ME![子表單].REFRESH

關於重複輸入之避免:
SET RS=CURRENTDB.OPENRECORDSET("SELECT * FROM 歷史記錄資料表 " &
" WHERE [歷史記錄資料表].商品名稱='" & ME![商品名稱] & "' AND " &
"[歷史記錄資料表].訂購日期=#" & ME![訂購日期] & "#")
IF NOT RS.EOF THEN '若不是EOF表示有相同條件的記錄存在.
由於你沒有能成為唯一鍵值的欄位,所以把全部欄位都帶進去篩選了.
作者 : funnydisk009(funnydisk)
[ 貼文 13 | 人氣 1904 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/26 下午 12:46:05
史努比大大,實在不好意思,我是個新手,所以問題很多

用 ADO 或 DAO
OPENRECORD子表單的資料表之後,
再新增資料到資表,
然後再REFRESH 表單和子表單
以下以DAO為例(不含錯誤判斷與處理也不含重複輸入之處理)
DIM RS AS RECORDSET
IF ME.DIRTY THEN ME.REFRESH
SET RS=CURRENTDB.OPENRECORDSET("歷史記錄資料表")
     ^^^^^^^^^^^是指主表單的資料表嗎?
作者 : kib72377(史努比) Visual Basic卓越專家Assembly優秀好手Access頂尖高手貼文超過1000則
[ 貼文 1455 | 人氣 1891 | 評價 8600 | 評價/貼文 5.91 | 送出評價 31 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/26 下午 01:19:04
me指主表單,
歷史記錄資料表 是指 子表單的資料表的資料來源
作者 : funnydisk009(funnydisk)
[ 貼文 13 | 人氣 1904 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/26 下午 03:55:59
史努比大大 謝謝

我也是認為「歷史記錄資料表 是指 子表單的資料表的資料來源」
但是設定好 執行 這一行卻出現「資料型態不符」於是中斷了

不知道錯誤在那?

作者 : kib72377(史努比) Visual Basic卓越專家Assembly優秀好手Access頂尖高手貼文超過1000則
[ 貼文 1455 | 人氣 1891 | 評價 8600 | 評價/貼文 5.91 | 送出評價 31 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/27 上午 09:31:14
商品名稱='" & ME![商品名稱] & "' AND " &
"[歷史記錄資料表].訂購日期=#" & ME![訂購日期] & "#")

商品名稱的型態: 文字? 還是 數字?
我上面假設型態是 文字
訂購日期型態: 文字? 還是 日期時間?
我上面假設型態是 日期/時間


列出你的程式和發生問題的地方,比較容易解決
作者 : hung07227(秋楓)
[ 貼文 14 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2017/8/21 下午 11:30:32
史努比大神與各位前輩好,
我是一個剛接觸ACCESS的新手,目前想用ACCESS做一個產品檢驗紀錄資料庫。
碰到的問題與這個主題相似,像做一個"產品基本資料"、"產品外觀檢驗"、"產品功能測試"的資料庫。
目前遇到問題是→想在"產品基本資料"的表單新增一個[產品編號]時,能自動在"產品外觀檢驗"及"產品功能測試"的資料庫新增一筆相同的[產品編號]紀錄。
(這樣就不用在"產品外觀檢驗"及"產品功能測試"的表單時重複選擇產品編號來增加操作的困難度XD)
目前參照史努比大神的範例,我使用如下:

■在"產品基本資料"的[產品編號]文字框的Afterupdate事件寫入下方程式
Dim RS1 As Recordset
Dim RS2 As Recordset

If Me.Dirty Then Me.Refresh

Set RS1 = CurrentDb.OpenRecordset("產品外觀檢驗")
RS1.AddNew
RS1("[產品編號]") = Me![產品編號]
RS1.Update
RS1.Close

Set RS2 = CurrentDb.OpenRecordset("產品功能測試")
RS2.AddNew
RS2("產品編號") = Me![產品編號]
RS2.Update
RS2.Close


另外,關於【ME![子表單].REFRESH】、【重複輸入之避免的程式】、【錯誤判斷與處理】不知道怎麼使用,所以沒有加入。
請問使用上面的程式會不會有什麼問題?

題外話...Me![產品編號]←裡面的"!"是什麼功用、意思?

以上希望各位前輩指點迷津,感激不盡,謝謝。
作者 : hung07227(秋楓)
[ 貼文 14 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2017/8/23 上午 12:31:04
>■在'產品基本資料'的[產品編號]文字框的Afterupdate事件寫入下方程式
>Dim RS1 As Recordset
>Dim RS2 As Recordset
>
>If Me.Dirty Then Me.Refresh
>
>Set RS1 = CurrentDb.OpenRecordset('產品外觀檢驗')
>RS1.AddNew
>RS1('[產品編號]') = Me![產品編號]
>RS1.Update
>RS1.Close
>
>Set RS2 = CurrentDb.OpenRecordset('產品功能測試')
>RS2.AddNew
>RS2('產品編號') = Me![產品編號]
>RS2.Update
>RS2.Close
>
>
各位大大好,
小弟使用上述程式後,發現一個問題......
我在'產品基本資料'表單輸入A005,透過上述程式確實在'產品外觀檢驗'、'產品功能測試'的資料庫新增了'產品編號'A005的資料。
但是小弟跑到'產品外觀檢驗'、'產品功能測試'的表單準備進一步設定A005的檢驗狀況時,發現透過上/下一筆紀錄查詢時查不到A005的資料。
請問小弟使用的程式裡面是不是遺漏了那些判斷與更新命令?
作者 : kib72377(史努比) Visual Basic卓越專家Assembly優秀好手Access頂尖高手貼文超過1000則
[ 貼文 1455 | 人氣 1891 | 評價 8600 | 評價/貼文 5.91 | 送出評價 31 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2017/12/20 上午 08:43:18
T0 hung07227(秋楓)
子資料 與 母資料 關聯的欄位沒有輸入資料?.

"!" 就類似指向結構中某元素的符號,
"!" 在ACCESS中通常用在 ACCESS物件,
如果是資料欄位的話, 可以用 ".",
ACCESS97之前版本是用"!"來指來源資料欄位,我沒改掉這習慣.
 板主 : 徵求中
 > Access - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Access - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Access
1 史努比 4480 
2 坤哥 3600 
3 rudy 1700 
4 tiger 1300 
5 EC2002 910 
6 阿呆紅 730 
7 hwangtw 550 
8 jkych 530 
9 小老頭 190 
10 阿酷 180 
Access
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.078125