Demande d'aide

AITFRAH1
Messages postés
10
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
19 janvier 2010
- 30 déc. 2007 à 11:25
tleboukaka
Messages postés
79
Date d'inscription
lundi 26 février 2007
Statut
Membre
Dernière intervention
5 mai 2010
- 31 déc. 2007 à 08:50
Bonjour ;


Merci d’avance à toute personne qui m’aidera à résoudre ce problème que je traîne depuis plus d’une année.


J’ai crée une petite application pour la gestion des livres. J’ai 2 tables :




Livre


qui se compose des champs suivants :


Code, Titre, Auteur, Quantité, Edition, Codcat, N°séquentiel



Nb : le Code est la concaténation entre Codcat, N°séquentiel.il est de type Alphanumérique.


Exemple : I001, H004



Catégorie qui se compose des champs suivants :


Codcat, Intitulé, Total


J’ai crée ensuite une intégrité référentielle entre les 2 tables représentée par le champ Codcat


Mon problème est le suivant :


J’ai crée une catégorie : INFORMATIQUE, son Codcat =I.



                                       HISTOIRE,  son Codcat =H



                                       ROMAN, son Codcat =R


J’ai enregistré des livres dans chaque catégorie.


I001, I002, I003, I004


Maintenant je veux renommer la catégorie INFORMATIQUE en TECHNOLOGIE avec son Codcat = T.


En effectuant les changements le Codcat de la table Livre change de I à T mais le Code reste toujours         I001 au lieu de T001



                      I002 au lieu de T002



                      I003 au lieu de T003



                      I004 au lieu de T004


J’ai crée un programme pour changer le Code lorsque  la catégorie change mais ça ne marche pas.


En effet


** Si le nouveau Codcat est  supérieur à l’ancien ça marche très bien.


Supérieur veut dire suit l’ancien Codcat dans l’ordre alphabétique.




Exemple .
changer INFORMATIQUE en TECHNOLOGIE AVEC Codcat  =T


Dans ce cas ça marche parce que le T vient après le I dans l’alphabet.



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




** Si le nouveau Codcat est  inférieur à l’ancien ça ne  marche pas.


Inférieur  veut dire vient avant  l’ancien Codcat dans l’ordre alphabétique.




Exemple .
changer INFORMATIQUE en ARTS AVEC Codcat  =A


Dans ce cas ça ne marche pas parce que le A vient avant le I dans l’alphabet


J’espère que j’ai bien exposé mon problème et que sa solution verra le jour rapidement.


En tous les cas je vous fournis le programme que je dépose sur le site pour la traiter à l’aise.


Je vous remercie.



 






 

3 réponses

cs_cantador
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
30 déc. 2007 à 12:35
C'est plus une question c'est un chantier !

il y aurait tellement de choses à dire qu'on ne sait plus par quel bout commencer..
je te conseille vivement de t'inspirer de quelques bases qui ont été déjà présentées sur ce forum et ensuite si nécessaire tu reviendras pour poser une seule question à la fois.

Joyeuses fêtes à tous

cantador
0
f0xi
Messages postés
4205
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
12 mars 2022
37
30 déc. 2007 à 15:13
tu as mal fait ta base :

Categories :
ID (numerique) 0..x
Description (texte) Informatique, Roman, Polar ...
CodeLetter (char) I, R, P ...

Auteurs :
ID (numerique) 0..x
Nom/Prenom (texte)

Editions :
ID (numerique) 0..x
Description (texte)

Livre :
ID (numerique) 0..x
IDCat (numerique) link -> Categorie -> ID
Titre
IDAut (numerique) link -> Auteurs -> ID
IDEdit (numerique) link -> Editions -> ID

NSequentiel
Quantité

Comme cela :
Quand on modifie cotegorie/edition/auteur les changements sont independants et de plus on gange de la place puisqu'on ne repete que les ID de ces derniers.

quand on cherche les livres d'une categorie :
SELECT * FROM Livres WHERE IDCat = [ID Categorie selectionné] ...

quand on cherche tout les livres d'un auteur :
SELECT * FROM Livres WHERE IDAut = [ID Auteur selectionné] ...

quand on cherche tout les livres d'une edition particuliere :
SELECT * FROM Livres WHERE IDEdit = [ID Edition selectionné] ...

cela simplifie grandement les requettes (utilisation de chiffre plutot que de texte).

Pour faire le code, tu n'as plus qu'a prendre :
SELECT CodeLetter FROM Categories WHERE ID = [ID categorie selectionné] ...
SELECT NSequentiel FROM Livres WHERE ID = [ID livre selectionné] ...

et voilou.
De tête ça doit donner approximativement un truc comme ça.
L'avantage majeur c'est que chaque chose est independantes des autres et donc les modifications/ajout/suppression ne sont plus contraignantes.

<hr size="2" width="100%" />
http://deefaze.gnomz.com
0
tleboukaka
Messages postés
79
Date d'inscription
lundi 26 février 2007
Statut
Membre
Dernière intervention
5 mai 2010

31 déc. 2007 à 08:50
slt

est ce que vous pouvez toujours préciser quelle base de données vous utilisez ? : bde/Paradox, interbase, FireBird ou autre ?

@+

Thibeault Lionel Eric
0