OVH Cloud OVH Cloud

SELECT dans un DataTable d'un Dataset

14 réponses
Avatar
Martin
Bonjour à tous,

J'ai une table dans un Dataset qui a été rempli avec des données provenant
d'un Serveur SQL.
Une fois que ce DataTable est rempli, je voudrais faire un SELECT sur ce
DataTable.
Un SELECT identique à celui sur une table sur le serveur SQL.
Est-ce que c'est possible ou qu'elle est la manière de faire un SELECT sur
un DataTable ???
Présentement, je fais une boucle pour retrouver mes données dans le
DataTable mais je perds énormément de performance.

Merci à l'avance !!!

10 réponses

1 2
Avatar
aitoz
c pas possible !
si tu y arrive je suis preneur !
Mais surement que tu peux mieux faire ta requete de base, ou effectuer ton
traitement dans une procédure stockées avec paramètres.

Sinon, tu peux tjs utiliser des filtres en placant tes données dans un
Dataview.

il faudrait préciser ton objectif final.

Bonne soirée
Avatar
Martin
C'est que je veux être en mesure de faire un SELECT sur mon DataTable.
(SELECT * FROM "DataTable" WHERE "Champ" = "Variable")
ou
(SELECT * FROM "DataTable" WHERE "Champ" = (SELECT * FROM "DataTable")

Pourtant, un DataTable est supposé être sensiblement la même chose qu'un
Recordset. Avec un Recordset local, nous étions en mesure de faire un SELECT
de la même manière qu'un SELECT SQL Serveur.

"aitoz" a écrit :

c pas possible !
si tu y arrive je suis preneur !
Mais surement que tu peux mieux faire ta requete de base, ou effectuer ton
traitement dans une procédure stockées avec paramètres.

Sinon, tu peux tjs utiliser des filtres en placant tes données dans un
Dataview.

il faudrait préciser ton objectif final.

Bonne soirée





Avatar
aitoz
ben, si tu trouves, je suis preneur ! je garde ce poste en observation.

Bonne chance
Avatar
Patrice
Bonjour,

Non ni avec le DataTable ni avec le recordset... Les deux sont une
représentation mémoire "légère" des données et on donc loin de pouvoir faire
des requêtes SQL dessus (je crois avoir vu des biblio tierce partie
permettant de le faire). La méthode "Select" permet de sélectionner des
données avec des critères simples.

Si le critère est simple, voir la méthode Select ou la pose de Filtre
(DefaultView.RowFilter par exemple).

Entre deux tables, il est peut-être possible également de faire une relation
(ce qui permet par exemple de filtrer table A et de se positionner
automatiquement sur les enfants dans table B).

Voir par exemple :
http://msdn.microsoft.com/library/fre/default.asp?url=/library/fre/vbcon/html/vburfIntroductionToDataViewDataSetView.asp
(en français)

--

Patrice

"Martin" a écrit dans le message de
news:
C'est que je veux être en mesure de faire un SELECT sur mon DataTable.
(SELECT * FROM "DataTable" WHERE "Champ" = "Variable")
ou
(SELECT * FROM "DataTable" WHERE "Champ" = (SELECT * FROM "DataTable")

Pourtant, un DataTable est supposé être sensiblement la même chose qu'un
Recordset. Avec un Recordset local, nous étions en mesure de faire un


SELECT
de la même manière qu'un SELECT SQL Serveur.

"aitoz" a écrit :

> c pas possible !
> si tu y arrive je suis preneur !
> Mais surement que tu peux mieux faire ta requete de base, ou effectuer


ton
> traitement dans une procédure stockées avec paramètres.
>
> Sinon, tu peux tjs utiliser des filtres en placant tes données dans un
> Dataview.
>
> il faudrait préciser ton objectif final.
>
> Bonne soirée
>
>
>


Avatar
Martin
En gros, c'est que j'ai le résultat de ma recherche SQL dans 2 DataTables et
je veux faire des SELECT à partir de ses 2 DataTables pour faire un autre
DataTable qui va contenir mes données finales.

"Patrice" a écrit :

Bonjour,

Non ni avec le DataTable ni avec le recordset... Les deux sont une
représentation mémoire "légère" des données et on donc loin de pouvoir faire
des requêtes SQL dessus (je crois avoir vu des biblio tierce partie
permettant de le faire). La méthode "Select" permet de sélectionner des
données avec des critères simples.

Si le critère est simple, voir la méthode Select ou la pose de Filtre
(DefaultView.RowFilter par exemple).

Entre deux tables, il est peut-être possible également de faire une relation
(ce qui permet par exemple de filtrer table A et de se positionner
automatiquement sur les enfants dans table B).

Voir par exemple :
http://msdn.microsoft.com/library/fre/default.asp?url=/library/fre/vbcon/html/vburfIntroductionToDataViewDataSetView.asp
(en français)

--

Patrice

"Martin" a écrit dans le message de
news:
> C'est que je veux être en mesure de faire un SELECT sur mon DataTable.
> (SELECT * FROM "DataTable" WHERE "Champ" = "Variable")
> ou
> (SELECT * FROM "DataTable" WHERE "Champ" = (SELECT * FROM "DataTable")
>
> Pourtant, un DataTable est supposé être sensiblement la même chose qu'un
> Recordset. Avec un Recordset local, nous étions en mesure de faire un
SELECT
> de la même manière qu'un SELECT SQL Serveur.
>
> "aitoz" a écrit :
>
> > c pas possible !
> > si tu y arrive je suis preneur !
> > Mais surement que tu peux mieux faire ta requete de base, ou effectuer
ton
> > traitement dans une procédure stockées avec paramètres.
> >
> > Sinon, tu peux tjs utiliser des filtres en placant tes données dans un
> > Dataview.
> >
> > il faudrait préciser ton objectif final.
> >
> > Bonne soirée
> >
> >
> >





Avatar
aitoz
Et pourquoi ne pas faire un datatable final directement ?
Sincerement j'ai du mal a cerner ce que tu veux faire !
C'est top secret ? explique comment se déroule l'utilisation de ton
programme et on te dira comment faire !

non ?
Avatar
Martin
Non, il n'y a rien de top secret.
Voici:

Premièrement, je vais chercher des données dans une base de données SQL en
remplissant un DataTable dans un Dataset.
Ensuite, je vais chercher d'autres données dans une autre base de données
SQL en remplissant un autre DataTable dans le Dataset.
Ensuite, je veux faire un SELECT dans le premier DataTable selon les données
du 2e DataTable et vice versa !!!
Vois-tu plus ce que je veux faire ???
Cependant, je ne trouve pas la syntaxe pour faire un SELECT avancé dans un
DataTable avec la clause WHERE des autres données de l'autre DataTable.

"aitoz" a écrit :

Et pourquoi ne pas faire un datatable final directement ?
Sincerement j'ai du mal a cerner ce que tu veux faire !
C'est top secret ? explique comment se déroule l'utilisation de ton
programme et on te dira comment faire !

non ?





Avatar
aitoz
Mais a priori, il n'est pas possible de faire un SELECT entre deux
DataTable.
Je vois ce que tu veux faire, mais je ne vois pas l'application elle meme.
A priori, si tu travail sur deux DataTable c'est parce que tu ne sais pas
faire ta requete en un seul morceau que tu pourrais mettre entierement dans
un seul DataTable ?
Ou tu as une interface utilisateur qui affiche chaque DataTable et tu permet
à l'utilisateur de de lancer un traitement qui fait un SELECT d'un DataTable
sur l'autre ???

C'est ça que je ne comprend pas !
Parce que si ton but est d'avoir un résultat final en effectuant un requete
d'un DataTable sur l'autre alors tu dois pouvoir utiliser une requete
imbriquée et avoir ton résultat d'un seul tenant !

Sauf si j'ai rien compris ! hihihi
Avatar
Martin
Je ne peux pas faire ma requête en un seul morceau car je vais chercher des
données dans des bases de données différentes.
Étant donné qu'un dataadapter demande sur qu'elle connection on travail, je
dois faire le remplissage de mes 2 DataTable en 2 section.
Un DataTable des données de la première base de données.
Un 2e DataTable des données de l'autre base de données.
Ensuite, comme mes données que j'ai besoin sont dans chacun des 2 DataTable,
je veux travailler avec ses 2 DataTables.
SELECT * FROM DataTable1 WHERE idcontrat IN (SELECT idContrat FROM DataTable2)

"aitoz" a écrit :

Mais a priori, il n'est pas possible de faire un SELECT entre deux
DataTable.
Je vois ce que tu veux faire, mais je ne vois pas l'application elle meme.
A priori, si tu travail sur deux DataTable c'est parce que tu ne sais pas
faire ta requete en un seul morceau que tu pourrais mettre entierement dans
un seul DataTable ?
Ou tu as une interface utilisateur qui affiche chaque DataTable et tu permet
à l'utilisateur de de lancer un traitement qui fait un SELECT d'un DataTable
sur l'autre ???

C'est ça que je ne comprend pas !
Parce que si ton but est d'avoir un résultat final en effectuant un requete
d'un DataTable sur l'autre alors tu dois pouvoir utiliser une requete
imbriquée et avoir ton résultat d'un seul tenant !

Sauf si j'ai rien compris ! hihihi





Avatar
Patrice
En gros savoir si une ligne est présente ou non dans un fichier par rapport
à l'autre ?

Si c'est sur la clé tu peux faire quelque chose comme :

For Each row As DataRow In a.Rows
If b.Rows.Find(row("pk")) Is Nothing Then Debug.WriteLine(row("pk") & "
de A pas dans B")
Next

Le champ doit-être une pk.

Sinon poste le code actuelle minimal qui montre ce que tu fais...
---
Patrice

"Martin" a écrit dans le message de
news:
Non, il n'y a rien de top secret.
Voici:

Premièrement, je vais chercher des données dans une base de données SQL en
remplissant un DataTable dans un Dataset.
Ensuite, je vais chercher d'autres données dans une autre base de données
SQL en remplissant un autre DataTable dans le Dataset.
Ensuite, je veux faire un SELECT dans le premier DataTable selon les


données
du 2e DataTable et vice versa !!!
Vois-tu plus ce que je veux faire ???
Cependant, je ne trouve pas la syntaxe pour faire un SELECT avancé dans


un
DataTable avec la clause WHERE des autres données de l'autre DataTable.

"aitoz" a écrit :

> Et pourquoi ne pas faire un datatable final directement ?
> Sincerement j'ai du mal a cerner ce que tu veux faire !
> C'est top secret ? explique comment se déroule l'utilisation de ton
> programme et on te dira comment faire !
>
> non ?
>
>
>


1 2