PatBlarg
Messages postés67Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention11 mai 2010
-
11 août 2008 à 16:26
PatBlarg
Messages postés67Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention11 mai 2010
-
14 août 2008 à 15:01
Bonjour! Je dois aller chercher des données dans un serveur, et là, j'ai vraiment aucune idée sur comment établir une connexion, et comment traiter les données du serveur.
Pour commencer, comment je me connecte au serveur SQL?
Sur un autre poste informatique, j'ai un logiciel qui stocke des données dans mon serveur. Ce sont des températures qui sont vérifier à toute les minutes, puis stocké dans la base de données.
Elles sont enregistrés dans le format suivant :
Rangé 1 : Identification de la sonde de température (1,2,3,4...)
Rangé 2 : Date de l'enregistrement 1
Rangé 3 : Valeur de l'enregistrement 1
Rangé 4 : Date de l'enregistrement 2
Rangé 5 : Valeur 2...
ainsi de suite jusqu'à 36.
Une fois 36 atteint, une nouvelle ligne est créée avec l'idenfication de la sonde dans la rangée 1, et on repart d'enregistrement 1 à 36. Si à la première minute on a 30°C et qu'à la 2e minute, la température ne change pas, rien n'est écrit dans la base de données SQL. On écrit dans la base de données seulement quand la valeur lue à chaque minute change. Ce qui fait que je peux avoir 20 lignes de la sonde 1, et seulement 1 ou 2 lignes de la sonde 2.
Ce que je cherche à faire c'est de créer un tableau dans excel avec ces données, mais plus simple à comprendre et qui pourrait servir pour créer des graphiques. Par exemple, l'usagé veut voir toutes les données entre certaines dates et heures qu'il spécifie, et ensuite on génére un tableau plus simple :
Rangé 1 : Toutes les dates, une ligne pour chaque
Rangé 2 : Même chose, mais pour les valeurs.
Donc quelqu'un peu m'indiquer une piste pour faire ca? Merdi! =)
PatBlarg
Messages postés67Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention11 mai 2010 11 août 2008 à 17:58
J'avais pensé à pré-insérer les base de données dans une feuille cachée de Excel, je sais que c'est très simple avec le ruban. Par contre je crois pas que ca soit possible.
Ma base de données devrait stocké en théorie les valeurs de 12 thermostats à chaque minute (une variation de 0,01°C compte, donc ca va être rare si on ne stocke pas une valeurs puisqu'elle est pareille), et chaque thermostats sont sur des lignes différentes. Donc :
(12 sondes x 1 valeures par minutes x 1440 minutes par jours) / 36 valeurs par lignes = 480 lignes par jours.
À ce rythme, je remplie une feuille excel en :
65 536 lignes max dans une feuille / 480 = 136 jours.
Ma base de données doit stocké des données pendant plusieurs années sans arrêt!
Donc la feuille va rapidement déborder
(je sais pas si c'est plus haut que 65 536 lignes dans Excel 2007, mais ca n'a pas d'importance, puisque je sais pas quelle version est installée sur le poste où se fichier va être utilisé.)
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 11 août 2008 à 18:35
Est-ce toi (ton appli) qui va stocker les valeurs lues sur les sondes, ou est-ce fait par un logiciel tiers et totalement indépendant de ton appli.
La manière de stocker ces infos n'est pas la plus pratique pour effectuer ensuite un traitement. Dans un traitement sur base de données, pour un groupe de données, il vaut mieux avoir une seule info par ligne plutôt que comme ici, 36 infos distinctes. Tu va difficilement pourvoir trier tes données ainsi.
Si tu as la possibilité de modifier la structutre de la base, il serait peut-etre plus judicieux d'avoir sur une seule ligne, la date et les valeurs des 12 sondes à un instant donné.
PatBlarg
Messages postés67Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention11 mai 2010 11 août 2008 à 19:11
C'est un logiciel séparé qui écrit dans la base de données, et c'est absolument celui-ci qui doit être utilisé, puisque le seul approuvé pour usage en laboratoire supposément.
J'ai voulu changer la facon de stocker les données, mais ca ne me semble pas possible.
Par contre, je vais faire le trie des données à partir de la feuille excel (et ca, je crois pas avoir de problèmes à le faire.) Tout ce que j'ai vraiment besoin de savoir maintenant, c'est comment je peux me connecter à ma base de données MS SQL, et comment aller chercher une plage de données données en faisait une commande dans le genre de : "WHERE (nom de ma colonne) >= 20" par exemple (je suis pas certain de la syntaxe SQL exacte, mais un truc du genre quoi.)
Mais ca j'ai pas trouvé comment faire non plus malgré que je sois toujours en recherche présentement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
PatBlarg
Messages postés67Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention11 mai 2010 13 août 2008 à 22:48
Eeeuh... oui, c'est bien, mais j'ai dis que je voulais le faire par VBA, puisque je dois faire un userform ou l'utilisateur spécifie des dates entre lesquelles chercher les données qui s'enregistreront pendant des années dans la base de données SQL, alors que celon mon nombre de données, il n'est possible d'enregistrer "que" 140 jours.
Donc si j'utilise le "MS Query" et ben ca marche pas, puisque la feuille excel ne contiendra jamais toute les données. Et en plus, je risque de devoir faire écrire dans la base de données SQL alors que plusieurs personnes à la fois se servent du fichier sur différent postes.
PatBlarg
Messages postés67Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention11 mai 2010 14 août 2008 à 13:58
Eeeuh.... je vois pas où tu veux en venir. J'ai déjà un serveur SQL, et à partir d'un programme (que ca soit programmé dans Excel ou dans Word, bref, en VBA) je dois faire afficher des données entre une certaine plage de temps, et les données sont toutes dattés (il y a une colonne pour la date). En gros, on veut que je programme une interface graphique qui se connecte au serveur SQL pour générer automatiquement un fichier Word ou Excel. Je peux pas le faire autrement qu'en VBA, parce que l'entreprise pour laquelle je travaille ne possède pas Visual Basic.
PatBlarg
Messages postés67Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention11 mai 2010 14 août 2008 à 15:01
Nope, ca insert directement la base de donnée à un endroit dans excel, et j'ai pas réussis à le modifier pour obtenir autres choses.
Mais bon, laisse tomber, j'ai trouvé quelque chose qui fonctionne pour ce que je voulais faire. Reste plus qu'à bien arranger tout ca et l'adapter comme il faut.
Sub SQL()
'Déclaration de la variable de connexion
Dim cnx As ADODB.Connection
Set cnx = New ADODB.Connection
'Définition de la chaîne de connexion
cnx.ConnectionString = "UID=" & "patrick" & ";PWD=" & "patrick" & ";" & "DRIVER={SQL Server};Server=" & "(local)" & ";Database=" & "catalogue" & ";"
'Ouverture de la base de données
cnx.Open
'Déclaration de la variable recordset
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "SELECT * FROM categories", cnx
While Not (rst.EOF)
MsgBox rst("ID") & " " & rst("nom") & " habite au " & rst("description") & "."
rst.MoveNext
Wend