Le calcul entre base de donne et listbox
Fermé
farid174
Messages postés
39
Date d'inscription
lundi 26 septembre 2016
Statut
Membre
Dernière intervention
12 février 2019
-
4 nov. 2016 à 00:20
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 - 5 nov. 2016 à 23:08
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 - 5 nov. 2016 à 23:08
A voir également:
- Le calcul entre base de donne et listbox
- Calcul moyenne excel - Guide
- Formules excel de base - Guide
- Virginie organise un rallye avec 30 équipes. elle veut créer un code pour désigner chaque équipe. elle a commencé à la main, mais elle voudrait le faire calculer à l'aide d'une formule. proposez une formule comportant une seule fonction et à recopier vers le bas dans la colonne a du fichier à télécharger. quelle formule sera en a9 ? ✓ - Forum Programmation
- Tnt base de données vide ✓ - Forum TNT / Satellite / Réception
- Base de registre - Guide
7 réponses
Utilisateur anonyme
4 nov. 2016 à 07:32
4 nov. 2016 à 07:32
Bonjour,
quel VB?
Et quelle base de données ?
quel VB?
- VBS
- VBA
- Word
- Excel
- Access
- Powerpoint
- Autre
- VB6
- VB.Net
- Winform
- WPF
Et quelle base de données ?
- sql server
- mysql
- access
- etc
Utilisateur anonyme
4 nov. 2016 à 13:56
4 nov. 2016 à 13:56
Ok et tu bloques à quelle étape?
Qu'as-tu essayé?
Peux t il y a avoir plusieurs éléments dans la base de données qui ont un le même code?
Même question pour ta listbox (entre nous sois dit, un contrôle n'a pas vocation à être une source de donnée, mais un moyen d'afficher cette source de données)
Qu'as-tu essayé?
Peux t il y a avoir plusieurs éléments dans la base de données qui ont un le même code?
Même question pour ta listbox (entre nous sois dit, un contrôle n'a pas vocation à être une source de donnée, mais un moyen d'afficher cette source de données)
farid174
Messages postés
39
Date d'inscription
lundi 26 septembre 2016
Statut
Membre
Dernière intervention
12 février 2019
1
Modifié par farid174 le 4/11/2016 à 23:40
Modifié par farid174 le 4/11/2016 à 23:40
je expliquer mon problème avec un autre façon j'ai un deux fichiers des coordonnes avec cette format (code point,x,y,z) ces fichiers sont de type text (.txt)
le fichier principal est une large fichier contient 250 000 linge (coordonnées) et le fichier secondaire contient 1000 linge le problème qui se pose que je recherche a la méthode qui me donne la résulta de calcul de (∆X,∆Y ,∆Z ) entre les deux fichiers
Remarque :
----- le calcule se fiat avec les point de même code sur les deux fichiers
----- tous les points de fichier secondaire un Certainement exister dans le fichier principal avec peu de changement sur les coordonnées qui je suis dans le processus de compte
---- le langage de programmation que je utilise vb.net 2010 windform
----- je pas démarre dans la tache de programmation parce que j'ai besoin le Príncipe de démarrage.
le fichier principal est une large fichier contient 250 000 linge (coordonnées) et le fichier secondaire contient 1000 linge le problème qui se pose que je recherche a la méthode qui me donne la résulta de calcul de (∆X,∆Y ,∆Z ) entre les deux fichiers
Remarque :
----- le calcule se fiat avec les point de même code sur les deux fichiers
----- tous les points de fichier secondaire un Certainement exister dans le fichier principal avec peu de changement sur les coordonnées qui je suis dans le processus de compte
---- le langage de programmation que je utilise vb.net 2010 windform
----- je pas démarre dans la tache de programmation parce que j'ai besoin le Príncipe de démarrage.
Utilisateur anonyme
Modifié par Whismeril le 5/11/2016 à 07:56
Modifié par Whismeril le 5/11/2016 à 07:56
Ca ne répond pas à
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Peux t il y a avoir plusieurs éléments dans la base de données qui ont le même code?
Même question pour ta listbox?
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
farid174
Messages postés
39
Date d'inscription
lundi 26 septembre 2016
Statut
Membre
Dernière intervention
12 février 2019
1
5 nov. 2016 à 20:14
5 nov. 2016 à 20:14
dans le base de donnée le code si unique pour chaque element sans répétition
mais dans listbox La répétition de code peut être existe
mais dans listbox La répétition de code peut être existe
Utilisateur anonyme
5 nov. 2016 à 21:34
5 nov. 2016 à 21:34
ok
dans un premier temps, il te faut écrire une classe qui possède aux moins les propriétés dont tu parles ici (Code, X, Y et Z), on va l'appeler Coordonnees car Point existe déjà dans la framework.
Ensuite il te faut remplir deux collections (la plus simple à utiliser est la List(of )) avec tes deux bases de données.
Dans un message tu parles de fichiers texte, dans l'autre tu reviens à la base de données...
Quand tu seras décidé, il y a des exemples sur le net pour les bases de données, dont ici
https://codes-sources.commentcamarche.net/source/s/visual-basic-vb-net-1/base-de-donn/last
Si tu as des fichiers texte "en ligne", tu peux utiliser la classe File.ReadAllLine, qui retourne un tableau de string dont chaque item est une ligne du fichier.
Ensuite tu parcours ce tableau pour remplir ta liste avec les données. S'il s'agit de données avec séparateur (csv, fichier tabulé, ect.), il faut utiliser la méthode Split de la classe string. S'il s'agit de fichier ou les données ont une largeur fixe, alors il faut utiliser SubString.
Si tu as des fichiers xml, je propose une méthode ici
https://codes-sources.commentcamarche.net/faq/11196-linq-to-xml-c-et-vb-net
Si tu as des fichiers json, il existe des exemples sur le net, dont ici
https://codes-sources.commentcamarche.net/source/s/visual-basic-vb-net-1/json/last
Ensuite tu vas faire une requête Linq Intersect, qui va retourner depuis ta grande liste, ceux qui ont le même code que dans la petite liste. Intersect ne retourne pas de doublon, donc il était important de savoir si des doublons existent dans la base de données.
Enfin une seconde requête Linq va parcourir tes autres données, chercher celles qui correspondent dans le résultat de la précédente et générer une instance de Coordonnees avec la différence
Les deux dernières étapes sont un peu compliquées, voici l'implémentation
Attention enlève les commentaires dans la requête, sinon ça ne compile pas.
Tu remarques que pour l'intersection, il faut une classe CoordonneesComparer, ça sert à définir comment on comparer deux Coordonnees
dans un premier temps, il te faut écrire une classe qui possède aux moins les propriétés dont tu parles ici (Code, X, Y et Z), on va l'appeler Coordonnees car Point existe déjà dans la framework.
Ensuite il te faut remplir deux collections (la plus simple à utiliser est la List(of )) avec tes deux bases de données.
Dans un message tu parles de fichiers texte, dans l'autre tu reviens à la base de données...
Quand tu seras décidé, il y a des exemples sur le net pour les bases de données, dont ici
https://codes-sources.commentcamarche.net/source/s/visual-basic-vb-net-1/base-de-donn/last
Si tu as des fichiers texte "en ligne", tu peux utiliser la classe File.ReadAllLine, qui retourne un tableau de string dont chaque item est une ligne du fichier.
Ensuite tu parcours ce tableau pour remplir ta liste avec les données. S'il s'agit de données avec séparateur (csv, fichier tabulé, ect.), il faut utiliser la méthode Split de la classe string. S'il s'agit de fichier ou les données ont une largeur fixe, alors il faut utiliser SubString.
Si tu as des fichiers xml, je propose une méthode ici
https://codes-sources.commentcamarche.net/faq/11196-linq-to-xml-c-et-vb-net
Si tu as des fichiers json, il existe des exemples sur le net, dont ici
https://codes-sources.commentcamarche.net/source/s/visual-basic-vb-net-1/json/last
Ensuite tu vas faire une requête Linq Intersect, qui va retourner depuis ta grande liste, ceux qui ont le même code que dans la petite liste. Intersect ne retourne pas de doublon, donc il était important de savoir si des doublons existent dans la base de données.
Enfin une seconde requête Linq va parcourir tes autres données, chercher celles qui correspondent dans le résultat de la précédente et générer une instance de Coordonnees avec la différence
Les deux dernières étapes sont un peu compliquées, voici l'implémentation
Dim baseDeDonnees As New List(Of Coordonnees)() From {New Coordonnees("code1", 1.2, 1.2, 1.2), New Coordonnees("code2", 2, 3, 4), New Coordonnees("code3", 5.5, 22, -1), New Coordonnees("code4", 10, 11, 9), New Coordonnees("code5", 3, 5, 8), New Coordonnees("code6", 0, 100, -50), New Coordonnees("code7", 123, 456, 789), New Coordonnees("code8", 22, 22, 22), New Coordonnees("code9", 987, 654, 321), New Coordonnees("code10", 135, 246, 802)} Dim aSoustraire As New List(Of Coordonnees)() From {New Coordonnees("code1", 1.3, 1.3, 1.3), New Coordonnees("code3", 5, 21, -2), New Coordonnees("code1", 1.5, 1.7, 1.9), New Coordonnees("code6", 10, 87, -47), New Coordonnees("code9", 987, 654, 321), New Coordonnees("code10", 134.5, 245.6, 805.2), New Coordonnees("code11", 0, 0, 0)} Dim intersection As IEnumerable(Of Coordonnees) = baseDeDonnees.Intersect(aSoustraire, New CoordonneesComparer()) Dim resultat As List(Of Coordonnees) = ( From c In aSoustraire'itere la liste soustraire et place l'instance en cours dans c Where intersection.Any(Function(x) x.Code = c.Code)'s'il existe dans interception un enregistrement avec le même que c Let c2 = intersection.Single(Function(x) x.Code = c.Code)'on place cet enregistrement dans c2 Select New Coordonnees(c.Code, c.X - c2.X, c.Y - c2.Y, c.Z - c2.Z)).ToList() 'et on crée une coordonnée avec la différence
Attention enlève les commentaires dans la requête, sinon ça ne compile pas.
Tu remarques que pour l'intersection, il faut une classe CoordonneesComparer, ça sert à définir comment on comparer deux Coordonnees
Class CoordonneesComparer Implements IEqualityComparer(Of Coordonnees) Public Overloads Function Equals(ByVal Un As Coordonnees, ByVal Autre As Coordonnees) As Boolean Return Un.Code = Autre.Code End Function Public Overloads Function GetHashCode(ByVal obj As Coordonnees) As Integer Return MyBase.GetHashCode() End Function End Class
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
Ambassadeur
1 550
5 nov. 2016 à 22:40
5 nov. 2016 à 22:40
si tu importes tes deux fichiers dans deux tables de ta base de données, cela va donner
une table T1 et une table T2,
chaque table contient des éléments (code,x,y,z)
si tu veux calculer les (∆X,∆Y ,∆Z ) ,
je suggère :
select T1.code, T1.x-T2.x as DX, T1.y-T2.y as DY, T1.z-T2.z as DZ
from T1, T2
where T1.code = T2.code
Cela va bien marcher si le "code" est unique dans chaque fichier.
une table T1 et une table T2,
chaque table contient des éléments (code,x,y,z)
si tu veux calculer les (∆X,∆Y ,∆Z ) ,
je suggère :
select T1.code, T1.x-T2.x as DX, T1.y-T2.y as DY, T1.z-T2.z as DZ
from T1, T2
where T1.code = T2.code
Cela va bien marcher si le "code" est unique dans chaque fichier.
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 550
5 nov. 2016 à 23:08
5 nov. 2016 à 23:08
pas grave si unique que dans un des deux fichiers.
résultat plus surprenant si unique dans aucun ficher, mais comment éviter cela?
résultat plus surprenant si unique dans aucun ficher, mais comment éviter cela?
Modifié par farid174 le 4/11/2016 à 13:43