Re: Help with GATHER and AutoInc fields

Author: Ajoy Khaund

Posted: 2008-12-29 at 06:21:12

wow you are quick. I was reading it just now and realized it was a typo.

Great

Ajoy Khaund

Neamati Road

Near Bhogdoi Bridge

Jorhat 785001-21

Assam, India

Tel: 91-376-2351288

Cell: 91-94350-92287

Mail: akhaund@hotmail.com

Mail: akhaund@gmail.com

"Walking on water and developing software from a specification are easy if

both are frozen."

- Edward V. Berard, "Life-Cycle Approaches"

--------------------------------------------------

From: "Rafael Copquin" <rcopquin@ciudad.com.ar>

Sent: Monday, December 29, 2008 4:47 PM

To: <profoxtech@leafe.com>

Subject: Fw: Help with GATHER and AutoInc fields

> 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 Ajoy Khaund