Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
FYI; Problem with PADL; .NULL. in SELECT SQL
Message
De
22/06/2009 17:49:42
 
 
À
22/06/2009 06:27:14
Lutz Scheffler
Lutz Scheffler Software Ingenieurbüro
Dresden, Allemagne
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Versions des environnements
Visual FoxPro:
VFP 9 SP2
Divers
Thread ID:
01407500
Message ID:
01407702
Vues:
41
>Hi All,
>
>this is for your information, you might confirm as well.
>
>Version mentioned is just the highest, I can follow the problem down to VFP 7.0
>
>Following construct:
>
>CREATE CURSOR curTest (i1 I NULL)
>
>INSERT INTO curTest VALUES (.NULL.)
>delete
>INSERT INTO curTest VALUES (1)
>INSERT INTO curTest VALUES (20)
>
>SELECT PADR(i1,11) FROM curTest
>
>Result is
>
>1
>2
>
>Table structure of result shows that the result contains one char field of lenght 1 (instead of 11)
>
>Some experiments with WHERE, NVL, JOIN allways return the same.
>
>It does not matter if the record is deleted or not, only factor is that it is the first one.
>
>Update
>Other approaches like CAST or BINTOC will solve my problem (I need a character version of a interger surrogate key for a combobox)
>
>Agnes

it is a VFP bug.

VFPT have forgotten to use the PAD parameter to define the length of the result before to read the source value,
when RECNO=1 and the value is null the C++ program path skip to use the PAD lenght.
( This VFP NULL bad C++ program path is present in many other commands and functions )

But !
With a C(N) field it work ( VFP use a different program path )
CREATE CURSOR curTest (i1 C(20) NULL)

INSERT INTO curTest VALUES (.NULL.)
delete
INSERT INTO curTest VALUES ('CHAR(20)')

SELECT PADR(i1,30) FROM curTest
SELECT PADL(i1,30) FROM curTest
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform