Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
pthierry Pro

Inscrit le: 27 Fév 2003 Messages: 455 Localisation: Paris 13
|
Posté le: 23 Jan 2005 12:10 Sujet du message: |
|
|
Lya a écrit: | Je voudrais essayer de mettre automatiquement le "surplus" du champ Description dans les notes avant de le couper à 60 caractères...
J'ai essayé ça, mais ça bloque ! Où est mon erreur ?
update EVENEMENTS_IND
set EV_IND_COMMENT = concat (EV_IND_COMMENT , ' ', substr (EV_IND_DESCRIPTION, 60))
where strlen (EV_IND_DESCRIPTION) > 60 |
rappel
EV_IND_COMMENT est un Blob de type texte
EV_IND_DESCRIPTION est un varchar de 90
attention le langage SQL bien que standardisé n'est pas tout à fait identique dans chaque base de données
je vois 2 erreurs dans ta requete
la concaténation : || 2 barres parallèles (touches Alt Gr + touche num 6)
et substr :
Functional description:
substr(s,m,n) returns the substring f s which starts at position m and
ending at position n.
ce qui donnerait quelquechose comme ça
set EV_IND_COMMENT = EV_IND_COMMENT ||' '|| substr (EV_IND_DESCRIPTION,1,10)
le malheur c'est que EV_IND_COMMENT est un Blob et on ne peut pas concaténer un blob avec un autre ou une chaîne de caractères _________________ N'oubliez pas la fonction Rechercher...
Cordialement Pierre |
|
Revenir en haut |
|
 |
Lya Pro


Inscrit le: 30 Juil 2003 Messages: 945 Localisation: Seine-et-Marne (77)
|
Posté le: 23 Jan 2005 17:28 Sujet du message: |
|
|
macpc a écrit: | Bonsoir Amandine
Ton truc m'interesse! |
Ah oui, quelle coïncidence ! ?!
pthierry a écrit: |
rappel
EV_IND_COMMENT est un Blob de type texte
EV_IND_DESCRIPTION est un varchar de 90
attention le langage SQL bien que standardisé n'est pas tout à fait identique dans chaque base de données
je vois 2 erreurs dans ta requete
la concaténation : || 2 barres parallèles (touches Alt Gr + touche num 6)
et substr :
Functional description:
substr(s,m,n) returns the substring f s which starts at position m and
ending at position n. |
Merci pour les explications Pierre ! J'ai une autre question de débutante :
par chance, pour tous mes individus "à problème", le champ notes était vide, donc j'ai simplement transféré le contenu de EV_IND_DESCRIPTION dans EV_IND_COMMENT avec cette procédure :
Code: | update EVENEMENTS_IND
set EV_IND_COMMENT = EV_IND_DESCRIPTION
where strlen (EV_IND_DESCRIPTION) > 59 |
maintenant, je voudrais vider le contenu de ces champs EV_IND_DESCRIPTION mais j'ai des problèmes avec la fonction DELETE...
j'ai essayé ça la place, mais ce n'est pas pareil, n'est-ce pas ?
Code: | update EVENEMENTS_IND
set EV_IND_DESCRIPTION = ''
where strlen (EV_IND_DESCRIPTION) > 59 |
Pour le problème des blobs, si j'ai bien compris, on ne peut pas manipuler leur contenu, donc il faudrait l'extraire puis le réinjecter ?
Bonne chance aux Pros !  _________________
Un bon voyageur n'a pas d'itinéraire fixe, et n'a pas l'intention d'arriver... |
|
Revenir en haut |
|
 |
Gvx Spécialiste


Inscrit le: 27 Déc 2004 Messages: 32 Localisation: Moselle (57)
|
Posté le: 23 Jan 2005 18:38 Sujet du message: |
|
|
Bonjour Amandine,
pour vider le champ EV_IND_DESCRIPTION je pense que tu peux utiliser la procedure suivante:
Code: | update EVENEMENTS_IND
set EV_IND_DESCRIPTION = NULL
where strlen (EV_IND_DESCRIPTION) > 59
|
qui permettra de remettre le champ a l'etat initial.
Si tu as deja executer la requete suivante:
Code: | update EVENEMENTS_IND
set EV_IND_DESCRIPTION = ''
where strlen (EV_IND_DESCRIPTION) > 59 |
il faudra utiliser cette procedure:
Code: | update EVENEMENTS_IND
set EV_IND_DESCRIPTION = NULL
where EV_IND_DESCRIPTION =''
|
Je n'ai pas verifier l'efficacité de cette derniere. _________________ A+ Gilles
Les petites histoires qui ont fait la grande histoire en Moselle
La généalogie de la famille |
|
Revenir en haut |
|
 |
pthierry Pro

Inscrit le: 27 Fév 2003 Messages: 455 Localisation: Paris 13
|
Posté le: 23 Jan 2005 20:31 Sujet du message: |
|
|
Lya a écrit: |
par chance, pour tous mes individus "à problème", le champ notes était vide, donc j'ai simplement transféré le contenu de EV_IND_DESCRIPTION dans EV_IND_COMMENT avec cette procédure :
Code: | update EVENEMENTS_IND
set EV_IND_COMMENT = EV_IND_DESCRIPTION
where strlen (EV_IND_DESCRIPTION) > 59 |
maintenant, je voudrais vider le contenu de ces champs EV_IND_DESCRIPTION mais j'ai des problèmes avec la fonction DELETE...
j'ai essayé ça la place, mais ce n'est pas pareil, n'est-ce pas ?
Code: | update EVENEMENTS_IND
set EV_IND_DESCRIPTION = ''
where strlen (EV_IND_DESCRIPTION) > 59 |
|
pour la 1ère requete : la mise à jour a du se faire pour ts les individus
même si le champ notes était plein (il écrase les données existantes)
pour le delete : il sert à supprimer des enregistrements
heureusement que ça n'a pas fonctionné sinon ta table evenements_ind aurait été vidée du nettoyage par le vide
si tu veux vider le contenu d'un champ c'est encore un update et le mieux c'est la remise à null _________________ N'oubliez pas la fonction Rechercher...
Cordialement Pierre |
|
Revenir en haut |
|
 |
Lya Pro


Inscrit le: 30 Juil 2003 Messages: 945 Localisation: Seine-et-Marne (77)
|
Posté le: 10 Fév 2005 03:15 Sujet du message: |
|
|
Juste un petit mot (avec bcp de retard) pour vous remercier de vos explications Gilles & Pierre !
Pas trop le temps de continuer mes expérimentations sql-iennes en ce moment, donc ... la suite de mes aventures, plus tard !  _________________
Un bon voyageur n'a pas d'itinéraire fixe, et n'a pas l'intention d'arriver... |
|
Revenir en haut |
|
 |
Lya Pro


Inscrit le: 30 Juil 2003 Messages: 945 Localisation: Seine-et-Marne (77)
|
Posté le: 14 Fév 2005 12:31 Sujet du message: |
|
|
Bonjour à tous
J'ai encore 1 question ! En tapant :
update EVENEMENTS_IND
set EV_IND_DESCRIPTION = substr(EV_IND_DESCRIPTION, 1, 59)
where strlen (EV_IND_DESCRIPTION) > 59
j'obtiens encore un message d'erreur (même chose sans la condition strlen d'ailleurs).
Qu'est-ce qui ne va pas cette fois ?  _________________
Un bon voyageur n'a pas d'itinéraire fixe, et n'a pas l'intention d'arriver... |
|
Revenir en haut |
|
 |
Gvx Spécialiste


Inscrit le: 27 Déc 2004 Messages: 32 Localisation: Moselle (57)
|
Posté le: 14 Fév 2005 22:57 Sujet du message: |
|
|
Bonsoir Amandine,
Je viens de tester la requete suivante adaptée a ma base de test
Code: | update EVENEMENTS_IND
set EV_IND_DESCRIPTION = substr(EV_IND_DESCRIPTION, 1, 10)
where strlen (EV_IND_DESCRIPTION) > 10 and EV_IND_KLE_DOSSIER =9
|
Je n'ai aucun message d'erreur et la requete execute bien la tache demandée.
Peux tu preciser la nature du message d'erreur obtenu. _________________ A+ Gilles
Les petites histoires qui ont fait la grande histoire en Moselle
La généalogie de la famille |
|
Revenir en haut |
|
 |
Lya Pro


Inscrit le: 30 Juil 2003 Messages: 945 Localisation: Seine-et-Marne (77)
|
Posté le: 16 Fév 2005 01:30 Sujet du message: |
|
|
Bonsoir Gilles
Merci beaucoup pour ta réponse !!!
J'ai réussi à comprendre le pourquoi du comment... :
En fait, j'obtenais le message type "Erreur lors de l'accès aux données", blocage d'Ancestro à la sortie du Bois (pardon BOA ) et arrêt du programme via le Gestionnaire des tâches.
Comme tu y arrivais, je me suis dit qu'il y avait un problème avec ma base et effectivement, en essayant avec une base "propre", ça marche parfaitement.
Finalement, j'ai réussi à localiser l'origine du blocage dans un dossier de test qui me servait justement à tester ces erreurs de type "Mismatch..."
Je pense que c'est parce que j'ai forcé la valeur à + de 60 caractères au départ, ou... c'est autre chose... J'ai un peu malmené cette pauvre base je crois !  _________________
Un bon voyageur n'a pas d'itinéraire fixe, et n'a pas l'intention d'arriver... |
|
Revenir en haut |
|
 |
|