Welcome To The Home Of The Visual FoxPro Experts  
home. signup. forum. archives. search. google. articles. downloads. faq. members. weblogs. sponsors. rss.
 From: Andy Kramek
  Where is Andy Kramek?
 Westminster Circle, Akron
 Ohio - United States
 Andy Kramek
 To: Anders Altberg
  Where is Anders Altberg?
 Uppsala
 Sweden
 Anders Altberg
 Tags
Subject: RE: Bad code I've seen
Thread ID: 138614 Message ID: 193150 # Views: 46 # Ratings: 0
Version: Not Applicable Category: Off-topic
Date: Monday, September 08, 2008 2:36:10 PM         
   


> >
> >
SELECT CPY.company_name, CTC.firstname, CTC.lastname  ;
> >   FROM company CPY ;
> >        LEFT OUTER JOIN contacts CTC ON CTC.companyfk = CPY.companypk ;
> >  WHERE CPY.company_name LIKE "A%" ;
> >   INTO CURSOR cur_list
> > 
> > SELECT cur_list
> > SCAN
> >   lcName = ALLTRIM( lastname ) + IIF( NOT EMPTY( firstname ), ", " + ALLTRIM( firstname ), "" )
> >   *** More code here
> > ENDSCAN

> >
> > The catch above? No test for NULLS! Note the OUTER JOIN in the query. Concatenating the names like this results in NULL if either the First, or Last name is NULL. It is an anomaly (if not actually a bug) that ALLTRIM( NULL ) returns NULL and not an error even though attempting to ALLTRIM() any other invalid data does throw an error.
> >
> > Regards
> > Andy Kramek
> > Microsoft MVP (Visual FoxPro)
> > Tightline Computers Inc, Akron Ohio, USA
>
> If there's no contact for the company both name columns will be Null. You couldn't get a case where just the firstname is null, but lastname isn't, could you? I assume the default for the column s must be '', and NOT NULL.
>
> -Anders

Actually this was real code, from a real application and a real scenario. Plenty of contacts are entered as only first names either because the last name is never given or is specifically denied (try and find the last name of your IRS contact - if you can get anything other than "Agent 123" to begin with).

There are two issues here.

[1] Bad data design - as you say the default should have been set to an empty string instead of allowing NULL

[2] An anomaly (not to say 'bug') in FoxPro's handling of ALLTRIM() where concatenating a NULL does NOT throw an error

However, in spite of these issues, the code itself is bad because of the implicit assumptions it makes and the failure to check for even the possibility of an error - which was my point!

Regards
Andy Kramek
Microsoft MVP (Visual FoxPro)
Tightline Computers Inc, Akron Ohio, USA



COMPLETE THREAD
Bad code I've seen Posted by Paul Gibson @ 7/17/2007 11:33:31 AM
RE: Bad code I've seen Posted by Boudewijn Lutgerink @ 7/17/2007 12:14:16 PM
RE: Bad code I've seen Posted by Ken Murphy @ 7/19/2007 2:27:44 AM
RE: Bad code I've seen Posted by Christian Tabligan @ 7/19/2007 3:12:26 AM
RE: Bad code I've seen Posted by Cetin Basoz @ 7/17/2007 12:24:11 PM
RE: Bad code I've seen Posted by Brian Walsh @ 9/7/2008 10:44:34 PM
RE: Bad code I've seen Posted by Cetin Basoz @ 9/8/2008 12:42:39 PM
RE: Bad code I've seen Posted by Ilya Rabyy @ 9/8/2008 6:11:29 PM
RE: Bad code I've seen Posted by Brad Schulz @ 9/8/2008 6:16:37 PM
RE: Bad code I've seen Posted by Ilya Rabyy @ 9/8/2008 6:32:11 PM
RE: Bad code I've seen Posted by Mike Yearwood @ 9/9/2008 1:07:25 AM
RE: Bad code I've seen Posted by Cetin Basoz @ 9/9/2008 1:07:04 AM
RE: Bad code I've seen Posted by Mike Yearwood @ 9/9/2008 3:38:23 PM
RE: Bad code I've seen Posted by Ilya Rabyy @ 9/9/2008 4:55:21 PM
RE: Bad code I've seen Posted by Mike Yearwood @ 9/10/2008 10:08:37 PM
RE: Bad code I've seen Posted by Ilya Rabyy @ 9/9/2008 4:43:28 PM
RE: Bad code I've seen Posted by Bernard Bout @ 9/12/2008 8:33:55 AM
RE: Bad code I've seen Posted by Cetin Basoz @ 9/12/2008 3:09:16 PM
RE: Bad code I've seen Posted by Mike Yearwood @ 9/12/2008 4:00:48 PM
RE: Bad code I've seen Posted by Bernard Bout @ 9/13/2008 6:01:30 AM
RE: Bad code I've seen Posted by Andy Kramek @ 7/17/2007 12:55:31 PM
RE: Bad code I've seen Posted by Thomas Bähr @ 7/17/2007 1:05:35 PM
RE: Bad code I've seen Posted by Andy Kramek @ 7/17/2007 11:52:45 PM
RE: Bad code I've seen Posted by Paul Gibson @ 7/18/2007 10:31:47 AM
RE: Bad code I've seen Posted by Anders Altberg @ 9/8/2008 1:29:58 PM
RE: Bad code I've seen Posted by Andy Kramek @ 9/8/2008 2:36:10 PM
RE: Bad code I've seen Posted by Brad Schulz @ 9/8/2008 3:52:38 PM
RE: Bad code I've seen Posted by Andy Kramek @ 9/9/2008 7:05:38 AM
RE: Bad code I've seen Posted by Jim Booth @ 9/9/2008 4:29:05 PM
RE: Bad code I've seen Posted by Andy Kramek @ 9/10/2008 1:33:51 PM
RE: Bad code I've seen Posted by Brad Schulz @ 9/9/2008 6:19:29 PM
RE: Bad code I've seen Posted by Jim Booth @ 9/9/2008 7:23:14 PM
RE: Bad code I've seen Posted by Andy Kramek @ 9/10/2008 1:39:51 PM
RE: Bad code I've seen Posted by Thomas Bähr @ 7/17/2007 1:02:29 PM
RE: Bad code I've seen Posted by Eric den Doop @ 7/18/2007 11:41:02 AM
RE: Bad code I've seen Posted by Tamar Granor @ 7/18/2007 10:19:47 PM
RE: Bad code I've seen Posted by Andy Kramek @ 7/19/2007 2:28:35 PM
RE: Bad code I've seen Posted by Barbara Peisch @ 7/19/2007 5:54:40 AM
RE: Bad code I've seen Posted by Eric den Doop @ 7/19/2007 7:00:56 AM
RE: Bad code I've seen Posted by Barbara Peisch @ 7/19/2007 8:00:59 AM
RE: Bad code I've seen Posted by tushar @ 7/19/2007 2:36:45 PM
RE: Bad code I've seen Posted by Eric den Doop @ 7/19/2007 2:57:49 PM
RE: Bad code I've seen Posted by Christian Pano @ 7/19/2007 11:34:31 AM
RE: Bad code I've seen Posted by Cetin Basoz @ 7/19/2007 12:12:56 PM
RE: Bad code I've seen Posted by Paul Gibson @ 7/19/2007 12:21:32 PM
RE: Bad code I've seen Posted by Cetin Basoz @ 7/19/2007 12:42:34 PM
RE: Bad code I've seen Posted by Paul Gibson @ 7/20/2007 11:36:26 AM
RE: Bad code I've seen Posted by Cetin Basoz @ 7/20/2007 3:13:48 PM
RE: Bad code I've seen Posted by Christian Pano @ 7/23/2007 11:10:22 AM
RE: Bad code I've seen Posted by John Peart @ 7/19/2007 12:18:54 PM
RE: Bad code I've seen Posted by Ken Murphy @ 7/19/2007 2:09:01 PM
RE: Bad code I've seen Posted by tushar @ 7/19/2007 2:24:51 PM
RE: Bad code I've seen Posted by Cetin Basoz @ 7/19/2007 2:44:42 PM
RE: Bad code I've seen Posted by tushar @ 7/19/2007 3:42:47 PM
RE: Bad code I've seen Posted by Ken Murphy @ 7/19/2007 8:22:04 PM
RE: Bad code I've seen Posted by Barbara Peisch @ 7/19/2007 8:34:36 PM
RE: Bad code I've seen Posted by Ken Murphy @ 7/19/2007 10:19:29 PM
RE: Bad code I've seen Posted by Barbara Peisch @ 7/19/2007 10:26:38 PM
RE: Bad code I've seen Posted by Thomas Bähr @ 7/20/2007 11:11:53 AM
RE: Bad code I've seen Posted by Ronan Masangcay @ 7/20/2007 4:48:50 AM
RE: Bad code I've seen Posted by Mike Yearwood @ 7/21/2007 2:35:23 AM
RE: Bad code I've seen Posted by Kurt Westerlund @ 9/12/2008 4:57:50 PM