Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

[REBOL] Re: Object Database

From: koolauscott:ya:hoo at: 13-Apr-2001 0:14

*****BEGINNER'S QUESTIONS***** Dr. Turk, I hope you don't mind my replying as I'm not much more than a beginner myself. I remember the difficulties I had when I was first starting out with Rebol. I still don't understand 90% of the stuff people talk about on this mailing list but I've learned enough Rebol to enjoy it. I think it is best to read through the core guide and then the Rebol for Dummies first before trying Rebol - The Official Guide. I started out with The Official Guide and knocked my head against it for 3 months, and while I'm sure it improved my character, I wouldn't recommend it for a beginner. There is a typo in the script you're using; try the one attached. It is an amazing script; I've been playing with it the past couple of days. I've just started to learn View and have been working on an interface for this script. The only databases I've done in Rebol have been small flat-files and they look really bloated compared to this. I've tried to answer the questions you raised as best I could, I hope it helps. To see the data you have entered use ==> probe database You can't print an object; use probe. The database block contains the database when it is loaded into Rebol. The %data file is just used to store the database to disk. All the database functions work with database block. load-data loads the disk copy of the database from disk and into the block called database. save-data writes the database block to the %data file, when you are done making modifications to the database. Thus find-data and remove-data can be called after you create a record with insert-data. Those functions only work with the database block and have nothing to do with the %data file. Hash I've added a line that turns the database block from a block! type to a hash! Change an Email Address First look-up the record to change with find-data and assign it to a variable ==> x: find-data [bill--example--com] then probe x to see the object ==> probe x To change bill's email address use ==> x/email: [bill--newemail--net] When you call save-data and then load-data you can use find-data with the new email address. ################################################# Email Contact Database REBOL [Title: "Email Contact Database"] db-file: %data record: context [name: email: phone: web: none] database: [] load-data: has [data] [ data: load/all db-file clear database foreach item data [ item: make record item repend database [item/email item] database: to-hash database ] ] save-data: has [data] [ data: copy [] foreach [key obj] database [ append/only data third obj ] save db-file data ] find-data: func [email] [select database email] remove-data: func [email] [remove/part find database email 2] insert-data: func [email' name' phone' web'] [ repend database [ email' make record [ email: email' name: name' phone: phone' web: web' ] ] ] ################################################## --- "Dr. Louis A. Turk" <[louisaturk--eudoramail--com]> wrote: