Index
2008-12-29 06:17Rafael Copquin : Fw: Help with GATHER and AutoInc fields
Back to top
Fw: Help with GATHER and AutoInc fields

Author: Rafael Copquin

Posted: 2008-12-29 06:17:34   Link

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]

©2008 Rafael Copquin