Dear Carl,
I am amazed that such a small amount of code can do so much, and also that
the creator of this language himself would help me like this. Many thanks!
I have some questions. I have been studying your code carefully trying to
learn how it works. I've been on this list for quite a while, but have
only recently taken time to buy Ralph's book and Elan and John's book to
really get serious about learning the language. I'm a real beginner, so
please excuse me if my questions betray that fact.
So far I have figured out how to use your functions to enter data into a
record, and then save it to a file. By entering "print read %data.r" at
the command line, I am able to see that I have entered the data
successfully. So I think I understand how to use insert-data and
save-data. However, when I type load-data I get an error message ("blk
has no value"); what am I doing wrong? Also, I assume that I must learn
how to get load-data to work before find-data and remove-data will work;
but to keep from having to ask you later, how are these two functions used?
I want to use this database for an email list. Most of the data remains
the same, but email addresses change often. Sometime I do not even have a
name---only an email address that has to be removed or changed. How do I
change an email address?
You say:
> If you expect to grow this database to a large
>size, you will want to MAKE HASH! the database when you load
>it.
Will this modification do it?:
>load-data: has [data] [
> data: make hash! load/all db-file
> clear database
> foreach item blk [
> item: make record item
> repend database [item/email item]
> ]
>]
Will your code work with Rebol/View also? Am I correct in assuming that
View would be ideal for creating a user interface for the database?
Many thanks for your help, and for creating a truly exciting language.
Louis
At 08:28 AM 4/9/2001 -0700, you wrote:
>What!? You just want us to just whip out an object database, eh? ;)
Well, I wasn't expect anyone to whip out one especially for me,
>Ok, why not.... Here is a small "contacts" database keyed by email.
>You can expand or reduce the record definition without corrupting
>or affecting the database.
>
>REBOL [Title: "Email Contact Database"]
>
>db-file: %data.r
>record: context [name: email: phone: web: none]
>database: []
>
>load-data: has [data] [
> data: load/all db-file
> clear database
> foreach item blk [
> item: make record item
> repend database [item/email item]
> ]
>]
>
>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'
> ]
> ]
>]
>
>You can expand/contract the record definition at any time.
>
>This is untested... but should be close to working, less a few
>minor typos. If you expect to grow this database to a large
>size, you will want to MAKE HASH! the database when you load
>it.
>
>-Carl
>
>PS: The remove/part on find really does work. Remove none is
>allowed in Core 2.5.
>
>
>-----Original Message-----
>From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of
>Dr. Louis A. Turk
>Sent: Monday, April 09, 2001 4:35 AM
>To: [EMAIL PROTECTED]
>Subject: [REBOL] Object Database
>
>
>I am trying to learn how to make an object database using REBOL. I need a
>simple, but complete, working example. Can anyone supply one?
>
>Also, what are probably dumb questions:
>
>1. If an object database contains data, will that data be lost if another
>field is added?
>
>2. Is there any way to change the name of an object in a database without
>losing the data in the object?
>
>3. Would it be possible to use email addresses for the names of the objects?
>
>Thanks in advance for any help.
>
>Louis
>
>
>--
>To unsubscribe from this list, please send an email to
>[EMAIL PROTECTED] with "unsubscribe" in the
>subject, without the quotes.
>
>
>--
>To unsubscribe from this list, please send an email to
>[EMAIL PROTECTED] with "unsubscribe" in the
>subject, without the quotes.
--
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the
subject, without the quotes.