Le calcul entre base de donne et listbox
farid174
Messages postés
39
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j ai un base de donnée qui contient un liste de 250 000 coordonnées points (code,x,y,z) et je recherche la manière qui me permette de calculer (∆X,∆Y ,∆Z ) entre cette base donne et un listebox limite par 1000 points
le calcul se fait entre les points qui sont occupent le meme code dans les deux côté ( base de donne et listbox)
j ai un base de donnée qui contient un liste de 250 000 coordonnées points (code,x,y,z) et je recherche la manière qui me permette de calculer (∆X,∆Y ,∆Z ) entre cette base donne et un listebox limite par 1000 points
le calcul se fait entre les points qui sont occupent le meme code dans les deux côté ( base de donne et listbox)
A voir également:
- Le calcul entre base de donne et listbox
- Base de registre - Guide
- Calcul moyenne excel - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Formules mathématiques de base - Télécharger - Études & Formations
- Formules excel de base - Guide
7 réponses
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
farid174
Messages postés
39
Date d'inscription
Statut
Membre
Dernière intervention
1
salut Je veux dire sur vb.net Winform et le base de données sur access
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)
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.
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
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
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
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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.