上一篇 | 下一篇

在Director中使用数据库(三)

发布: 2007-1-25 14:59 | 作者: Gary Rosenzweig | 来源: 译自director-online.com | 查看: 261次

  原著:Gary Rosenzweig奥古多媒体D#m6v f+?+^,C
  翻译:lovem
Y D'q shq 奥古多媒体(z;Y2^g"w/F'JU h
  这周,我们将上两个专栏所建的数据库程序进一步完善。以前我们遗漏了一个关键的功能,就是修改和删除已记录的数据。
)CB+tF:n KJd
Q6k~,nC'b$J   为了实现这两个功能,你必须允许用户选择数据。我们已经可以将数据以HTML表格的形式列出来了,那么,要让用户选择数据,我们就可以简单地给每行加上一段超文本语言,这样他们就可以单击选中并修改了。这只需要在listData句柄中加一行代码,这将会增加一个字“EDIT”,这个字与链接数据的编号链接在一起。奥古多媒体/k+q5lG*_{

C:BgbtL p|Z   在listData句柄重有一行额外的代码,你可以检查我们的例子程序,看看它到底在哪。奥古多媒体 zcv A#^/l8`?4?
奥古多媒体y!X6O}i0U(VY/O
-- link to edit record奥古多媒体0MviO.j l$K9VG
put " " after html
[9Nsi,hM;M 奥古多媒体;Ts*e [1b
  现在,当用户在主界面点击了“List Data”按钮后,可以看到在表的每一行前都有一个超链接“EDIT”。点击这个超链接后,程序将发送一个信息给hyperlinkClicked。这将以字符串形式传递超链接数据,我们将其转换为一个数字再传递给一个新的句柄:editRecord。奥古多媒体 F/r1s,i}u9u4S

sn"`r oya on hyperlinkClicked me, href奥古多媒体1T8DXC CA7F#t D XO
  recordNum = value (href)奥古多媒体 ^&o*p&P.oBJq
  editRecord (recordNum)
;h1\6j4p"P5UJ~ end奥古多媒体 xFmX^o*z

s{IyL   editRecord句柄则将数据从数据库读取出,并放到与“New Entry”帧处相同的输入框中,但是,我们却不在那一帧,而是跳到一个新的帧“Edit Record”。这里“RECORD”按钮和“DELETE”按钮分别代替了“CLEAR”按钮和“ADD THIS”按钮。句柄用了一个全局变量——gEditRecord,用以存储被编辑数据的编号,这个当新数据代替旧数据时能用得上。
HN[+T0[FE-m 奥古多媒体*[#A5usB8eM6Mf
on editRecord n 奥古多媒体anvtA
  -- remember which is being edited
9T"~5M#x#uMQ|+u|"k8f   gEditRecord = n 奥古多媒体L-k`Naa-G7s0l
  -- get record from database
y*e)b?r1HO){   record = gDatabase[gEditRecord]
:hd9K.U9ZSF]L9K^   -- put fields from record onto screen
b5gwAz)a`   member ("entry-name").text = record["Name"]
(T.~T pB0G$J7h   member ("entry-street").text = record["Street"]奥古多媒体1odb d{7a*L
  member ("entry-city").text = record["City"]奥古多媒体m^k]I
  member ("entry-state").text = record["State"]奥古多媒体1xLtX4e
  member ("entry-zip").text = record["Zip"]
'w*K"c3NJu   member ("entry-phone").text = record["Phone"]奥古多媒体:}0K+Q Km$?
  member ("entry-birthday").text = record["Birthday"] 奥古多媒体5h{\4_F)Q8f
  go to frame "Edit Record"
VGX {N7S]i end
C @9hDt&fY%[
/|4J;dt$boZ   用户可以选择和编辑任何一个框中数据。当编辑完成后,按下“RECORD”按钮就会激活下面的句柄,这个看起来挺像“addNewEntry”句柄的,但是其中从gDatabase替换gEditRecord所显示的项目这一功能代替了增加数据到gDatabase功能。奥古多媒体aA@R+?R\;Q

;z ~8ldOi on recordChanges
W&xb Z~8}   -- get all fields and make a new record
k~1uE(mfOG9o   newEntry = [:]
4[G B&O f   addProp newEntry, "Name", member ("entry-name").text奥古多媒体D&HW+oij:C
  addProp newEntry, "Street", member ("entry-street").text奥古多媒体.EW$G$NnY)mF
  addProp newEntry, "City", member ("entry-city").text
,v;yB0S1R.@&@$g   addProp newEntry, "State", member ("entry-state").text奥古多媒体$X||aV}|,T*L l
  addProp newEntry, "Zip", member ("entry-zip").text奥古多媒体 f#K:se+i7eX a5y4\
  addProp newEntry, "Phone", member ("entry-phone").text奥古多媒体| R9A"E Ned&_r
  addProp newEntry, "Birthday", member ("entry-birthday").text 奥古多媒体!M[rCH'x~a%I
  -- replace old record with new one奥古多媒体Ke}K ac k
  gDatabase[gEditRecord] = newEntry
0@K }[H)q r_ `   -- return to list view
1F'T7r%Ro7X1s   listData 奥古多媒体q T M'w(zhO5P4Zl
end
T G7J*[yw 奥古多媒体 S VUtf6`j@
  deleteRecord句柄也使用gEditRecord变量,这样就可以从gDatabase识别并删除正确的项目。
p*n,h:SS?c7iY 奥古多媒体Z$vk5Cc]0d~%D
on deleteRecord
Z%^!]+_G9Kz   -- remove record from database
2e6w(J z}OY   deleteAt gDatabase, gEditRecord 奥古多媒体"G h _D T+l5P.L
  -- return to list view奥古多媒体!O;o2?qJb ^0et
  listData
2E/s:G)V'`6vC#\ end
0|p"vN z3M6h 奥古多媒体;]@/^[4X$n!Oq4Qr
  当deleteRedord和recordChanges执行完返回时都会调用listData,以将数据列出。这将使用户可以快速的更改或删除一些数据而无需每次都返回主界面。
0AZ\L{.lr;@ 奥古多媒体9cwG%uji5s#]v
  现在这个数据库程序已经有了不少功能了,它也接近完成了。下一步,我们将添加一个搜索功能。这将改变那个仅仅是显示数据的listData句柄。小型数据库也许不需要,但大型数据库却是必须得。我将在下个星期继续介绍。

字号: | 推荐给好友

 

评分:0

我来说两句

seccode


音乐
落叶 画心 放生 天亮了 牡丹江 那滋味 擦肩而过 怀念过去 北京欢迎你 突然好想你 吻的太逼真 说好的幸福呢 坐上火车去拉萨 如果爱能早些说出来
愚爱 心碎 稻香 带我走 醉赤壁 魔杰座 我还想她 为你而活 一定要爱你 等爱的玫瑰 原谅我一次 越单纯越幸福 最后一次的温柔 给我一首歌的时间
白狐 光荣 火花 下雨天 小酒窝 樱花草 为你写诗 无可取代 无情的温柔 寂寞才说爱 忘不掉的伤 爱上你是个错 陪你一起看草原 地球人都知道我爱你
城府 假如 花海 兰亭序 爱太痛 舍不得 你若成风 女人如烟 外滩十八号 我们的纪念 摇滚怎么了 和寂寞说分手 爱上你是我的错 爱情里没有谁对谁错