Re: Help with GATHER and AutoInc fields

Author: Rafael Copquin

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

Even though it is Monday morning!

Take care

Rafael

----- Original Message -----

From: "Ajoy Khaund" <akhaund@gmail.com>

To: <profoxtech@leafe.com>

Sent: Monday, December 29, 2008 9:21 AM

Subject: Re: Help with GATHER and AutoInc fields

> 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 Rafael Copquin