banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 21 July 2010 20:08

jean94
Participant assidu
Date d'inscription: 13 Aug 2009
Messages: 436

[MapBasic v.10] erreur dans la fonction Do While Not EOT( )

Bonjour a tous,

Voici un code qui est supposer réduire la taille de toute les colonnes d'une table au nombre de caractère du plus petit objet.

La ligne bloque ou est la flèche

Code:

sub fieldsizer

dim i as smallint
dim colnum as smallint
dim fieldlenth as integer
dim newfieldlenth as integer
dim strfieldlenth as string
i = 1
fieldlenth = 0
colnum = TableInfo(sNewFileN, TAB_INFO_NCOLS)
Do while i < colnum

Fetch First From sNewFileN
Do While Not EOT(sNewFileN)
strfieldlenth = sNewFileN.coli                        '<--------------------
newfieldlenth = len(strfieldlenth)
if newfieldlenth >= fieldlenth then fieldlenth = newfieldlenth
else fieldlenth = fieldlenth
end if

Fetch Next From sNewFileN
Loop

Alter Table sNewFileN ( modify COLi Char(fieldlenth) ) Interactive
i = i + 1
Loop

commit table sNewFileN
end sub

Merci!

Dernière modification par jean94 (Wed 21 July 2010 20:10)

Hors ligne

 

#2 Wed 21 July 2010 21:36

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: [MapBasic v.10] erreur dans la fonction Do While Not EOT( )

Bonjour
Au cas où il y aurait une question dans votre sujet, je vous conseille une recherche sur l'item "alias"....

Hors ligne

 

#3 Thu 22 July 2010 14:06

jean94
Participant assidu
Date d'inscription: 13 Aug 2009
Messages: 436

Re: [MapBasic v.10] erreur dans la fonction Do While Not EOT( )

Merci Maurice et je crois que ces mon problème car j'ai trouver une solution et la voici..aussi innéficace soit-elle, elle fonctionne...

Code:

sub fieldsizer

Close table sNewFileN
Open table sNewFilePath + sNewFileN as nom_bidon

dim i as smallint
dim colnum as smallint
dim fieldlenth as integer
dim newfieldlenth as integer
dim strfieldlenth as string

i = 1
fieldlenth = 0

colnum = TableInfo(nom_bidon, TAB_INFO_NCOLS)
Do while i < colnum

Fetch First From nom_bidon
Do While Not EOT(nom_bidon)
strfieldlenth = nom_bidon.coli                        '<--------------------
newfieldlenth = len(strfieldlenth)
if newfieldlenth >= fieldlenth then fieldlenth = newfieldlenth
else fieldlenth = fieldlenth
end if

Fetch Next From nom_bidon
Loop

Alter Table nom_bidon ( modify COLi Char(fieldlenth) ) Interactive
i = i + 1
Loop

Merci encore JF

Dernière modification par jean94 (Thu 22 July 2010 14:06)

Hors ligne

 

Pied de page des forums

Powered by FluxBB