UPDATE de la BDD et groupement de résultats

Résolu
Morveus Messages postés 19 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 12 juin 2007 - 16 mai 2007 à 14:27
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 16 mai 2007 à 17:37
Bonjour,

Je suis débutant en VBA 2005, je suis actuellement stagière dans un centre informatique et j'ai comme projet la création d'une interface de gestion d'une base de données (stocks de machines, serveurs etc..).

J'ai donc créé une appli en VBA 2005 (je n'en suis qu'au début) et je me heurte à deux problèmes que je n'arrive pas à résoudre, alors qu'ils me semblent tout bêtes...

1) J'ai une ComboxBox nommée ListeTypes (par exemple), et dans la base de données j'ai une colonne TYPE, qui contient entre autres:

- Ecran
- RAM
- DD
- ...

Evidemment il y a plusieurs entrées, et j'arrive à afficher la colonne dans la liste déroulante, mais ce que je veux c'est n'afficher qu'une seule occurrence de chaque... Avec un GROUP BY ca doit être faisable, or je n'arrive pas à le faire (en code).

2) Apres m'être heurté à ce problème, je suis passé à autre chose en attendant, et j'ai donc créé un formulaire de gestion des blades. Ce formulaire affiche la représentation graphique d'un rack à 14 emplacements de blades (rack nommé et blades nommées). J'aimerais qu'il soit possible de rajouter des racks vides (sans blades, pour permettre aux techniciens de voir les nouveaux racks disponibles le jour où ils doivent ajouter des blades...).
J'ai donc créé une petite textbox, un petit bouton, et dans le code ca donne:

Try
      BaseServeursDataSet.Blades.AddBladesRow(NomChassis.Text)
      MsgBox("Chassis ajouté!")
Catch ex As Exception
      MsgBox("Une erreur s'est produite!")
Finally
      Me.Validate()
      Me.BladesBindingSource.EndEdit()
      Me.BladesTableAdapter.Update(Me.BaseServeursDataSet.Blades)
EndTry

----

BaseServeursDataSet : le dataset de la base de données "Base Serveurs" créé avec l'assistant de Visual Basic 2005 Express
Blades : Table de cette même base de données, contient les noms des blades et de leurs racks (= châssis)
NomChassis = boite de texte
Entre "Finally" et "EndTry" se trouvent les 3 lignes que j'ai piquées au code généré automatiquement par le logiciel, qui sont censées mettre à jour la ligne ajoutée dans le fichier .MDB (enfin, d'après ce que j'ai compris!)

Quelqu'un aurait-il une solution à me proposer?

Merci d'avance!

Morveus

6 réponses

chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
16 mai 2007 à 17:04
désolé pour le concepteur intégré...aucune idée.
Je travaille avec Access et VB6.
Mais une idée fofolle : regardes si c' est pas une question de synthaxe.
Peut =etRe que le majuscule n' est pas toléré et qu' il faudra mettre
"select Type from XTABLE groupe by Type"

------------------------------------------------------------------------------------------------------------------------------------------
© - Développer..c' est cultiver un sens de l' humour bien particulier.                        
3
Morveus Messages postés 19 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 12 juin 2007
16 mai 2007 à 14:56
1) J'ai trouvé pour l'update!
J'étais en mode Debug, donc la base de données restait ouverte par Visual Basic 2005 Express (donc pas d'écriture dans la base!)

En compilant et en fermant le projet, les updates dans la base de données fonctionnent!

En revanche, je n'ai toujours pas trouvé pour mon second problème, si quelqu'un a une piste je lui en serait très reconnaissant !
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
16 mai 2007 à 16:04
Bonjour,
Normalement tu dois avoir une table TYPES dans laquelle
tu n' auras qu' une ligne par Type.
Mais si tu veux faire un regroupement à partir d' un fichier Historique
ou chaque type y figure plusieurs fois , la synthaxe est:
"SELECT Type FROM XTABLE GROUPE BY Type;"

------------------------------------------------------------------------------------------------------------------------------------------
© - Développer..c' est cultiver un sens de l' humour bien particulier.                          
<h6 align="right">(Rolling, mon poisson rouge) 
0
Morveus Messages postés 19 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 12 juin 2007
16 mai 2007 à 16:36
Merci pour ton conseil (une table TYPE)
La solution du GROUP BY est celle que je comptais utiliser, seul problème j'aimerais créer la requête à l'aide du concepteur de requêtes de VBA2005 Express, pour des raisons pratiques (faire la requête en code, je sais faire, mais c'est moins pratique :))

Saurais-tu me dire comment créer ma requête à l'aide du concepteur intégré? J'ai bien essayé de le faire, mais j'ai un message d'erreur me disant que cette requête n'a pas le même schéma que les autres... (pourtant je sais faire des requêtes SQL lol)

Merci beaucoup
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Morveus Messages postés 19 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 12 juin 2007
16 mai 2007 à 17:12
Ok je vais me pencher plus sérieusement sur le probleme vendredi, ca doit vraiment être une broutille à laquelle je n'ai pas fait attention. Si jamais ca ne fonctionne pas, ton idée de la table contenant juste les types me conviendra parfaitement :)

Merci encore!
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
16 mai 2007 à 17:37
Pour la table TYPES, c' est même recommandé...
ça permet d' établir une relation qui contraint à :
>1° Renseigner le type
>2° Le type renseigné doit éxister

Bonne fin de journée...

------------------------------------------------------------------------------------------------------------------------------------------
© - Développer..c' est cultiver un sens de l' humour bien particulier.                        
0
Rejoignez-nous