Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Accès natif... Toujours des problemes...

1 réponse
Avatar
B. Neve
Qui peut m'expliquer cela...
J'ai un enregistrement qui contient un mémo texte. Dans ce mémo, il y a la
valeur "JE SUIS LE MEMO TEXTE"
J'exécute le code suivant
HLitRecherche("MVT","MVCLEUNIK",1102)
MVT.QUANTITE=8
Hmodifie("MVT")

Voici le code qui apparaît dans SQL Profiler :

SELECT
[MVCLEUNIK],[CODEARTICL],[QUANTITE],[DATE1],CONVERT(TEXT,[NOTE]),[REFLORSR],
[NUMMVT],[ARTDATE],TEXTPTR([NOTE]) FROM [MVT] (NOLOCK) WHERE
[MVCLEUNIK]=1102 ORDER BY [MVCLEUNIK]
go
Ok... On va chercher l'enregistrement

SELECT
[MVCLEUNIK],[CODEARTICL],[QUANTITE],[DATE1],CONVERT(TEXT,[NOTE]),[REFLORSR],
[NUMMVT],[ARTDATE],TEXTPTR([NOTE]) FROM [MVT] (NOLOCK) WHERE
[MVCLEUNIK]=1102
go
Tiens... Une deuxième fois... Bon ok admettons.... C'est pas le pire

UPDATE [MVT] SET
[CODEARTICL]='4030',[QUANTITE]=8,[DATE1]='19990308',[NOTE]=NULL,[REFLORSR]='
10-218-2',[NUMMVT]='' WHERE [MVCLEUNIK]=1102
go

Et là... HORREUR... le champ NOTE est mis à NULL... Là, j'me jette par la
fenêtre... Pffuit, on a viré mon mémo...

SELECT
[MVCLEUNIK],[CODEARTICL],[QUANTITE],[DATE1],CONVERT(TEXT,[NOTE]),[REFLORSR],
[NUMMVT],[ARTDATE],TEXTPTR([NOTE]) FROM [MVT] (NOLOCK) WHERE
[MVCLEUNIK]=1102
go

Et là, il relit l'enregistrement amputé des mémos bien évidemment.

Qui a une piste pour moi ?

Merci d'avance,

B. Nève

1 réponse

Avatar
Manu
"B. Neve" a écrit dans le message news:
3fc3e5b9$0$3228$
Qui peut m'expliquer cela...
J'ai un enregistrement qui contient un mémo texte. Dans ce mémo, il y a la
valeur "JE SUIS LE MEMO TEXTE"
J'exécute le code suivant
HLitRecherche("MVT","MVCLEUNIK",1102)
MVT.QUANTITE=8
Hmodifie("MVT")

Voici le code qui apparaît dans SQL Profiler :

SELECT



[MVCLEUNIK],[CODEARTICL],[QUANTITE],[DATE1],CONVERT(TEXT,[NOTE]),[REFLORSR],
[NUMMVT],[ARTDATE],TEXTPTR([NOTE]) FROM [MVT] (NOLOCK) WHERE
[MVCLEUNIK]02 ORDER BY [MVCLEUNIK]
go
Ok... On va chercher l'enregistrement



Pour moi c'est le HLitRecherche("MVT","MVCLEUNIK",1102)

SELECT



[MVCLEUNIK],[CODEARTICL],[QUANTITE],[DATE1],CONVERT(TEXT,[NOTE]),[REFLORSR],
[NUMMVT],[ARTDATE],TEXTPTR([NOTE]) FROM [MVT] (NOLOCK) WHERE
[MVCLEUNIK]02
go
Tiens... Une deuxième fois... Bon ok admettons.... C'est pas le pire



Pour moi pas déconnant : on se repositionne dessus pour voir si il est
toujours là vu que l'enreg n'est pas locké. Hmodifie("MVT")

UPDATE [MVT] SET



[CODEARTICL]='4030',[QUANTITE]=8,[DATE1]='19990308',[NOTE]=NULL,[REFLORSR]='
10-218-2',[NUMMVT]='' WHERE [MVCLEUNIK]02
go



Le "vrai" Hmodifie("MVT") qui ... modifie la donnée

Et là... HORREUR... le champ NOTE est mis à NULL... Là, j'me jette par la
fenêtre... Pffuit, on a viré mon mémo...



çà c'est étonnant. Pour moi plusieurs possibilités :
- le champ note est bien à null dans la base (attention à la notion de
commit)
- lors de la 2eme lecture (celle de l'update) la zone tampon n'a pas été
mise à jour (bug, erreur de lecture). Que te renvoie le select effectuée
sous un requeteur ?

SELECT



[MVCLEUNIK],[CODEARTICL],[QUANTITE],[DATE1],CONVERT(TEXT,[NOTE]),[REFLORSR],
[NUMMVT],[ARTDATE],TEXTPTR([NOTE]) FROM [MVT] (NOLOCK) WHERE
[MVCLEUNIK]02
go

Et là, il relit l'enregistrement amputé des mémos bien évidemment.



Pour être sur qu'il est bien mis à jour. Par contre 3 select + un update
pour faire un update dans la base c'est pas mal.

B. Nève



Manu