EN DIRECT en ligne connexion / inscription
Connexion

Surnom/Pseudo
Mot de Passe :

[ Vous avez perdu votre mot de pass ? | Devenir membre ]

×

config , page 4

Aller à la page :   123456  
CowcotLand topic RSS feed Surveiller les réponses de ce sujet
Nokomform @
Agriculteur
Agriculteur

2475pts

Inscrit le: 09 juillet 2012
Age: 42
Messages: 1255

Navigateur : n.c.

Hors ligne
Message Posté le: 17 février 2015 à 14:50  Lien permanent
Répondre en citant
Exynos1 a écrit:
Donc l'idée ca serait par exemple pour la CM d'avoir une image de CM avec son nom à coté dans un textbox, puis si on clique sur l'image / la textbox, ca ouvre un datagridview dans lequel on trouve toutes les CM, ensuite on double clique sur celle qui nous intéresse et ce mettrait à jour la première image / textbox.

Effectivement ca serait sympa comme ca, mais avant de faire "tout ca" (comme tu as pu le remarquer, c'est la première fois que je fait du C# voir même un programme complet) j'aimerais bien que le principe de base fonctionne.

C'est à dire que mon programme soit capable de vérifier la compatibilité des composants entre eux.
Il "suffit simplement" de comparer 2 caractéristiques à chaque fois (le socket pour la compatibilité CM - Proc par exemple) mais à mon avis juste ca va me prendre pas mal de temps.

Du coup, dans un premier temps je vais juste mettre un datagridview / composant (avec un choix très restreint de composant) afin de faire fonctionner le programme de base puis ensuite je développerais le programme en le faisant fonctionner comme tu l'as décrit.


Pour aller encore plus loing, je pensais carrément mettre une photo de config :


Puis mettre une textbox / composant à coté, et par exemple, si l'on passe la souris sur le textbox "Le Processeur", entourer en rouge le proco sur la photo, et ensuite reprendre ton fonctionnement quand on clique sur le textbox.


Bref, d'abord je vais me concentrer sur le principe de base.

Quand je clique sur tas photos sa m'améne a un lien hostingpics ...et c'est pas tas tour que je vois mais une page imprim écran de facebook :)
Voir le profil de l'utilisateur Envoyer un message privé » Album Photos
Exynos1 @
Métayer
Métayer

4868pts

Inscrit le: 19 mars 2011
Messages: 1199

Navigateur : n.c.

Hors ligne
Message Posté le: 17 février 2015 à 15:14  Lien permanent
Répondre en citant
Effectivement, par moment l'event ne se déclenche pas... Après la fonction a l'air de bien fonctionner. Bizarre.

Edit : [quote="Nokomform"][quote="Exynos1"]Donc l'idée ca serait par exemple pour la CM d'avoir une image de CM avec son nom à coté dans un textbox, puis si on clique sur l'image / la textbox, ca ouvre un datagridview dans lequel on trouve toutes les CM, ensuite on double clique sur celle qui nous intéresse et ce mettrait à jour la première image / textbox.

Effectivement ca serait sympa comme ca, mais avant de faire "tout ca" (comme tu as pu le remarquer, c'est la première fois que je fait du C# voir même un programme complet) j'aimerais bien que le principe de base fonctionne.

C'est à dire que mon programme soit capable de vérifier la compatibilité des composants entre eux.
Il "suffit simplement" de comparer 2 caractéristiques à chaque fois (le socket pour la compatibilité CM - Proc par exemple) mais à mon avis juste ca va me prendre pas mal de temps.

Du coup, dans un premier temps je vais juste mettre un datagridview / composant (avec un choix très restreint de composant) afin de faire fonctionner le programme de base puis ensuite je développerais le programme en le faisant fonctionner comme tu l'as décrit.


Pour aller encore plus loing, je pensais carrément mettre une photo de config :


Puis mettre une textbox / composant à coté, et par exemple, si l'on passe la souris sur le textbox "Le Processeur", entourer en rouge le proco sur la photo, et ensuite reprendre ton fonctionnement quand on clique sur le textbox.



Alors ca c'est vraiment énorme, hostingpics hier a complètement débloqué xD (j'avais jamais vu ce screen au passage et il ne vient pas de chez moi).
Bref, l'image en full size n'apporte rien de plus.


Edit : pour mon "problème"... Je mérite 3 coups de CHLAC pour mon erreur d’inattention... J"utilisais l'événement "CellContentDoubleClick", ce qui fait qu'il fallait cliquer sur le TEXTE de la cellule pour que cela fonctionne...
Du coup j'ai utilisé l'événement "CelleDoubleClick" et miracle, plus de problème.
Merci au boulet d'un autre forum qui a fait la même erreur que moi Mort de rire


Dernière édition par Exynos1 le 31 mars 2015 à 10:48; édité 1 fois
Voir le profil de l'utilisateur Envoyer un message privé
Exynos1 @
Métayer
Métayer

4868pts

Inscrit le: 19 mars 2011
Messages: 1199

Navigateur : n.c.

Hors ligne
Message Posté le: 17 février 2015 à 17:52  Lien permanent
Répondre en citant
Bon, je rencontre un nouveau soucis.
Maintenant que j'ai récupéré les infos de ma CM et de mon Proc, j'aimerais comparer leur socket (string socketCM et string socketProc).

Pour tester, j'ai mis une textbox qui m'afficherait "incompatible" si socketCM != socketProc et "compatible" sinon :


[code]


Dernière édition par Exynos1 le 31 mars 2015 à 10:49; édité 1 fois
Voir le profil de l'utilisateur Envoyer un message privé
funkydata @
Métayer
Métayer

3497pts

Inscrit le: 12 septembre 2014
Age: 45
Messages: 2149

Navigateur : n.c.

Hors ligne
Message Posté le: 17 février 2015 à 18:11  Lien permanent
Répondre en citant
C'est pas comme ça que ça fonctionne les événements standards. Tu accèdes aux propriétés via "e". Faut pas ajouter comme ça à l'arrache des variables dans la fonction ou alors il faut dériver ou surcharger la fonction de base.
Voir le profil de l'utilisateur Envoyer un message privé
Exynos1 @
Métayer
Métayer

4868pts

Inscrit le: 19 mars 2011
Messages: 1199

Navigateur : n.c.

Hors ligne
Message Posté le: 17 février 2015 à 19:13  Lien permanent
Répondre en citant
Euh... Je suis complètement perdu là, il doit me manquer une grosse partie théorique (je pensais faire comme en C++ mais ca ne fonctionne pas).
Il faut que je passe mes 2 string par le EventHandler ??
Voir le profil de l'utilisateur Envoyer un message privé
funkydata @
Métayer
Métayer

3497pts

Inscrit le: 12 septembre 2014
Age: 45
Messages: 2149

Navigateur : n.c.

Hors ligne
Message Posté le: 17 février 2015 à 20:12  Lien permanent
Répondre en citant
Si tu fais comme ça en C++ ça fonctionne pas non plus Très content

Bon déjà si tu dois indiquer si le couple CM/Proc est compatible pourquoi est-ce que tu fais ce test dans l’événement qui se déclenche lorsque tu changes le contenu du textbox qui doit indiquer le résultat du test ? Déjà ici il y a un gros problème d'algo.

Il faut que tu fasses une classe (ou une structure tout dépend du besoin) qui va servir a stocker et regrouper les infos sur la sélection actuelle. C'est cette classe qui va lancer toutes les vérifications pour s'assurer de la compatibilité des compos. Ceci dit, normalement, tu n'auras même pas besoin de tester dans une version normale car la requête SQL va automatiquement exclure ce qui est incompatible.

Par exemple :

Code:

// Normalement c'est a stocker dans la BDD mais c'est pour l'exemple
public enum eSocketType
{
        None = 0x00,
   LGA1150 = 0x01,
   AM3Plus = 0x02
}

public enum eFormatType
{
        None = 0x00,
   ATX = 0x01,
   mATX = 0x02
}

public struct Motherboard
{
   public int ID;
   public string Name;
   public eSocketType Socket;
   public eFormatType Format;
}

public struct CPU
{
   public int ID;
   public string Name;
   public eSocketType Socket;
}

public class CurrentPC
{
   protected int _ID;
   protected Motherboard _Motherboard;
   protected CPU _CPU;
   
   public Motherboard Motherboard
   {
      get{ return _Motherboard;}
      set
      {
         if (_Motherboard != value && CheckCompatibility(value, _CPU))
         {
            _Motherboard = value;
         }
         else
         {
            MessageBox.Show("Carte mère incompatible avec le CPU sélectionné");
         }
      }
   }
   
   public CPU CPU
   {
      get{ return _CPU;}
      set
      {
         if (_CPU != value && CheckCompatibility(_Motherboard, value))
         {
            _CPU = value;
         }
         else
         {
            MessageBox.Show("CPU incompatible avec la carte mère sélectionnée");
         }
      }
   }
   
   public CurrentPC(int ID)
   {
      _ID = ID;
      _CPU = default(CPU);
      _Motherboard = default(Motherboard);
   }
   
   private bool CheckCompatibility(Motherboard motherboard, CPU cpu)
   {
      if (motherboard.Socket != eSocketType.None && cpu.Socket != eSocketType.None)  return motherboard.Socket == cpu.Socket;
      else return true;
   }
}


J'ai tapé sous Notepad un peu à l'arrache mais c'est vraiment pour l'exemple.

Quand l'utilisateur change de CM ou de CPU il suffit de mettre à jour les propriétés de ta classe qui va faire le test de compatibilité.
Voir le profil de l'utilisateur Envoyer un message privé
Exynos1 @
Métayer
Métayer

4868pts

Inscrit le: 19 mars 2011
Messages: 1199

Navigateur : n.c.

Hors ligne
Message Posté le: 24 février 2015 à 15:08  Lien permanent
Répondre en citant
Ok, effectivement je ne savais pas où placer mon code, je connais peu la syntaxe C# même si certaines choses ressemblent au C++.


Donc pour filtrer les CM compatibles avec le proc selectionné et avec la requête SQL, j'ai fait ce code, qui m'a l'air anti-AMD Mort de rire
(Je pense que cette solution est lourde niveau code mais peut fonctionner) :
Au moment du double clique dans le datgridviewProc, je fait une requête qui sélectionne les CM ayant le même socket que le proc sélectionné puis qui remplie le datagridviewCM.


Code:


Le truc que je trouve bizarre, c'est que quand je sélectionne un proc au socket 1155, pas de soucis, il me remplit la datagridviewCM avec les CM au socket 1155.
Mais si je sélectionne un proc au socket AM3+, il me met une erreur au niveau de cette ligne :
[code[/code]

Avec comme message "erreur de syntaxe près de la ligne 1" Choqué

Edit : je précise que j'ai bien une CM au socket AM3+ dans ma BDD, parcontre, chose que je trouve bizarre, il y a une ligne vide au milieu de mon datagridview CM.


Dernière édition par Exynos1 le 31 mars 2015 à 10:48; édité 1 fois
Voir le profil de l'utilisateur Envoyer un message privé
Exynos1 @
Métayer
Métayer

4868pts

Inscrit le: 19 mars 2011
Messages: 1199

Navigateur : n.c.

Hors ligne
Message Posté le: 27 février 2015 à 14:02  Lien permanent
Répondre en citant
Edit : trouvé, il fallait que je passe le parametre "socketProc" en chaine de caractere dans la requete SQL, sinon le "+" était considéré comme une addition.
Voir le profil de l'utilisateur Envoyer un message privé
Exynos1 @
Métayer
Métayer

4868pts

Inscrit le: 19 mars 2011
Messages: 1199

Navigateur : n.c.

Hors ligne
Message Posté le: 02 mars 2015 à 18:06  Lien permanent
Répondre en citant
Bonjour,

J'ai un soucis pour ma requête : quand je sélectionne une CM, je fait la requête qui sélectionne les boitiers compatibles.
Le problème est que pour les boitiers qui peuvent accueillir plusieurs types de CM (Micro-ATX, ATX etc...), la requête ne fonctionne pas, puisque le champs "formatCM" n'est pas égale au champ "format de carte mere".

Je ne sais pas si c'est clair mon explication...
Voilà la ligne de la requête :

Code:
=


Donc "formatCM" va (par exemple) contenir la donnée "Micro-ATX" et le champ "format de carte mere" va (par exemple) contenir la donnée "ATX / Micro-ATX".

La requête ne se fait pas comme je le souhaite dans ce cas, elle ne prend pas les boitiers capable de recevoir différents types de CM Triste

Alors est-ce qu'il y a un autre moyen de faire ma requete ? Ou comment lui faire "comprendre" ?


Dernière édition par Exynos1 le 31 mars 2015 à 10:49; édité 1 fois
Voir le profil de l'utilisateur Envoyer un message privé
Taloken @
Céréalier
Céréalier

8224pts

Inscrit le: 22 octobre 2012
Age: 29
Messages: 5086
Localisation: Niort
Navigateur : Firefox

Hors ligne
Message Posté le: 02 mars 2015 à 18:52  Lien permanent
Répondre en citant
Comment sont stockés les différents formats acceptés par un boitier ?


>> Rejoignez nous sur Star Citizen ! <<
Fond d'écran Cowcotland
Voir le profil de l'utilisateur Envoyer un message privé » Album Photos » Google Map
Exynos1 @
Métayer
Métayer

4868pts

Inscrit le: 19 mars 2011
Messages: 1199

Navigateur : n.c.

Hors ligne
Message Posté le: 02 mars 2015 à 19:23  Lien permanent
Répondre en citant
C'est une base de données sql (myphpadmin).
Base de données intitulé "configpc" => table "boitier" => colonne "format de carte mère" (VARCHAR).
Donc tous les formats acceptés par un boitier sont stockés en 1 chaine de caractere.
Voir le profil de l'utilisateur Envoyer un message privé
Taloken @
Céréalier
Céréalier

8224pts

Inscrit le: 22 octobre 2012
Age: 29
Messages: 5086
Localisation: Niort
Navigateur : Firefox

Hors ligne
Message Posté le: 02 mars 2015 à 19:44  Lien permanent
Répondre en citant
Je m'en doutais.

Forcément une comparaison simple de chaînes ça marchera pas.

Je suppose (espère) que ta chaîne est formatée comme par exemple en CSV, ce qui te permettrait ensuite de récupérer cette chaîne sous forme d'array à coups split/join, et de taper dans cet array pour la comparaison.

Après ça reste "crade", en bien mieux, tu créé une table formats qui contient tes formats ATX, Micro-ATX etc ... avec leurs dimensions si tu veux peupler un peu, et une table qui fait l'association format/carte mère avec comme clé primaire : le couple id mobale/id format.

Alors oui une relation Many-To-Many c'est relou à requêter, mais c'est plus costaud qu'une chaîne concaténée à l'arrache.


>> Rejoignez nous sur Star Citizen ! <<
Fond d'écran Cowcotland
Voir le profil de l'utilisateur Envoyer un message privé » Album Photos » Google Map
Exynos1 @
Métayer
Métayer

4868pts

Inscrit le: 19 mars 2011
Messages: 1199

Navigateur : n.c.

Hors ligne
Message Posté le: 02 mars 2015 à 19:55  Lien permanent
Répondre en citant
J'ai trouvé la méthode pour faire la requête que je voulais :


Bon, c'est peut être une méthode pas très propre mais fonctionnelle, et vu que je suis limité par mon niveau de C# / sql (complètement inéxistant il y a de ça 1 mois Mort de rire ) et par le temps... Ca fera bien l'affaire cette méthode Roulement des yeux


Dernière édition par Exynos1 le 31 mars 2015 à 10:49; édité 1 fois
Voir le profil de l'utilisateur Envoyer un message privé
2ShEp @
Métayer
Métayer

4423pts

Inscrit le: 03 février 2014
Age: 38
Messages: 3099
Localisation: BzH - Rennes
Navigateur : Firefox

Hors ligne
Message Posté le: 02 mars 2015 à 20:12  Lien permanent
Répondre en citant
Si tu veux respecter un peu les bonnes pratiques de modélisation (lois normales & Co), tu dois sortir le format de ta table boitier, créer une table table boitier_format et créer une table d'association.

En gros et simplifié :
#boitier (id, modèle, description). #boitier_format(id, nom) #boitier_format_asso(boitier_id, boitier_format_id)

Ensuite pour avoir les Boitier ATX mettons voila une requete (très vite fait) type :

SELECT * FROM boitier AS B
INNER JOIN boitier_format_asso AS BFA ON (B.id = BFA.boitier_id)
INNER JOIN boitier_format AS BF ON (BF.id = BFA.boitier_format_id)
WHERE BF.nom = "ATX"

Le mieux reste de ne travailler qu'avec des id et pas des chaines.

Ensuite pour faire simple fait des objets (entités) qui reflètent tes tables
Object Boitier {
Integer id;
String modele;
String description;
}

La modélisation c'est très important, du temps passer à modéliser n'est jamais du temps de perdu, c'est même plutôt l'inverse.

Je peux te faire un modèle (structure de BDD) qui tiendra la route si tu veux.

J'espère pas t'avoir trop assommer ^^




Dernière édition par 2ShEp le 02 mars 2015 à 20:20; édité 1 fois
Voir le profil de l'utilisateur Envoyer un message privé » Album Photos
Taloken @
Céréalier
Céréalier

8224pts

Inscrit le: 22 octobre 2012
Age: 29
Messages: 5086
Localisation: Niort
Navigateur : Firefox

Hors ligne
Message Posté le: 02 mars 2015 à 20:20  Lien permanent
Répondre en citant
je dirais même qu'après tu pourrais associer cette table format à la carte mère, et rien qu'en suivant les FK, t'auras tout dans tous les sens ^^


>> Rejoignez nous sur Star Citizen ! <<
Fond d'écran Cowcotland
Voir le profil de l'utilisateur Envoyer un message privé » Album Photos » Google Map
Aller à la page :   123456  
Sauter vers: 
Surveiller les réponses de ce sujet CowcotLand topic RSS feed  

Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sujets similaires

Sujet Auteur Forum Réponses Posté le
Pas de nouveau message Ajout et remplacement pièces config actuelle Poutz L'atelier 4 25 mars 2024 à 13:05
Pas de nouveau message Upgrade config 2016 d'un ami Sphx L'atelier 26 19 mars 2024 à 11:49
Pas de nouveau message Évolution config ancienne - Conseils bjc49 L'atelier 13 13 mars 2024 à 07:32
Pas de nouveau message [VDS] Config PC AMD Ryzen 9 5950X + RTX 3070ti FE + 64Gb RAM Mybluesuedeshoe Ventes 4 01 mars 2024 à 13:03
Pas de nouveau message Réflexion future config Darcier L'atelier 18 09 février 2024 à 14:09