Sorry I made a gross mistake:
the line should be scatter name, not gather name, when you create the object
scatter name oCustomers memo blank
(two much champagne during the Christmas celebrations)
Rafael Copquin
----- Original Message -----
From: "Rafael Copquin" <rcopquin@ciudad.com.ar>
To: <profox@leafe.com>
Sent: Monday, December 29, 2008 9:14 AM
Subject: Re: Help with GATHER and AutoInc fields
> The problem you are facing is that VFP does not let you replace an autoinc
> field because it is readonly.
>
> There are two ways to do a gather, in the scenario you are posting here:
>
> a) check the VFP help for set autoincerror ( I do not use it at all)
>
> b) use gather name
>
> The customers table has an autoincrementing field (custid) that I use as
> the PK for that table. When I need to make changes to a certain record,
> gather is the command of choice. Here's how I do this:
>
> select Customers
> gather name oCustomers memo blank && create an object with empty
> properties (fields)
>
> removeproperty(oCustomers,'custid')
>
> that is, remove from the object oCustomer, the property (field) that is an
> autoincrementing field
> then proceed to make changes as necessary in the object's properties
>
> with oCustomers
> .name = 'John Doe'
> .address = '223 Main St.'
>
> etc.
> endwith
>
> gather name oCustomers
>
> This will replace the corresponding fields in the record with the
> objects's properties as above. Because you have removed the custid
> property (which is an autoincrementing field) from the object, you do not
> touch that field in the table, and your gather command replaces all other
> fields, just as the old gather memvar command did.
>
> BTW, you can use the same technique with the insert command, simply by
> replacing the gather name line above with:
>
> insert into customers from name oCustomers
>
> Since you are not attempting to replace the autoinc field with anything,
> it will just operate by itself, incrementing the fields value
> automatically and allowing a new record to be added.
>
> Happy New Year
>
> Rafael Copquin
>
>
>
>
>
>
> ----- Original Message -----
> From: "Matt Slay" <foxstuff@jordanmachine.com>
> To: <profoxtech@leafe.com>
> Sent: Sunday, December 28, 2008 1:38 AM
> Subject: Help with GATHER and AutoInc fields
>
>
>> Need some guidance here... I am trying to copy the data in one record
>> to a new record in the same table, then change the JobNo field to some
>> new Job umber that I already have and validated as unique.
>>
>> The problem is that the table has an AutoInc field named "ipkey", and
>> VFP does not want to let me do a GATHER for obvious reasons.
>>
>> So, I understand why it has this limitation because of autoinc, I just
>> want to know how one normally works around it.
>>
>> Presently, to get around it, I am doing a REPLACE command on every
>> field except ipkey, but I was hoping to use the SCATTER NAME / GATHER
>> NAME method to avoid having to list out every field, and so I would
>> have code that is independent of the field names.
>>
>> Here's what I wanted to use:
>>
>> Select 0
>> Use Jobs order jobno
>> ... navigate to the desired record ..
>> SCATTER NAME loCurrentJob
>> Append Blank
>> Gather NAME loCurrentJob
>> replace JobNo with lcNewJobNo && a passed in value, already validated
>>
>>
>>
>>
>> --- StripMime Report -- processed MIME parts ---
>> multipart/alternative
>> text/plain (text body -- kept)
>> text/html
>> ---
>>
[excessive quoting removed by server]