Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[C# Dataset] Je n'arrive pas a faire un simple requête.?

3 réponses
Avatar
zoltix
Bonjour,
Mon problème est assez simple.
J’ai un dataset avec deux tables la table A et la table B. J’ai créée une liaison. Mais je n’arrive pas a voir mes données .
Table A ( Aid,Aname,….) et la table B( Bid,Bname,….) je voudrais faire un jointure qui serait équivalent en Sql : select * from A INNER JOIN B on A.Aname=B.Bname


Pourriez vous m’aider
Merci d’avance.

String sql;
String con;
SqlDataAdapter da;

con = ConfigurationSettings.AppSettings["conTest"];

sql ="SELECT Aid,Aname FROM A WHERE Aid>2";
da = new SqlDataAdapter(sql, con);
da.Fill(ds, "A");

sql = "SELECT Bid,Bname FROM B";
da.SelectCommand.CommandText = sql;
da.Fill(ds, "B");

ds.Relations.Add("AInnerLinkB", ds.Tables["A"].Columns["Aname"], ds.Tables["B"].Columns["Bname"]);

Comment puis je voir les voir les donnée qui correspond un un sql (Sql : select * from A INNER JOIN B on A.Aname=B.Bname)

3 réponses

Avatar
Gilles TOURREAU
Le Thu, 15 Feb 2007 17:16:50 +0100, zoltix a écrit:

Bonjour,
Mon problème est assez simple.
J’ai un dataset avec deux tables la table A et la table B. J’ai créée
une liaison. Mais je n’arrive pas a voir mes données .
Table A ( Aid,Aname,….) et la table B( Bid,Bname,….) je voudrais faire
un jointure qui serait équivalent en Sql : select * from A INNER JOIN B
on A.Aname=B.Bname


Pourriez vous m’aider
Merci d’avance.

String sql;
String con;
SqlDataAdapter da;

con = ConfigurationSettings.AppSettings["conTest"];

sql ="SELECT Aid,Aname FROM A WHERE Aid>2";
da = new SqlDataAdapter(sql, con);
da.Fill(ds, "A");

sql = "SELECT Bid,Bname FROM B";
da.SelectCommand.CommandText = sql;
da.Fill(ds, "B");

ds.Relations.Add("AInnerLinkB", ds.Tables["A"].Columns["Aname"],
ds.Tables["B"].Columns["Bname"]);

Comment puis je voir les voir les donnée qui correspond un un sql (Sql :
select * from A INNER JOIN B on A.Aname=B.Bname)



Soit vous faites votre requête et stockez le résultat dans un DataSet,

sql = "select * from A INNER JOIN B on A.Aname=B.Bname";
da.SelectCommand.CommandText = sql;
da.Fill(ds, "Jointure");

Dans la table ds["Jointure"] vous aurez ainsi directement le résultat de
la jointure...

Soit vous parcourez vos tables ainsi :

//Parcourt de la table "parent"
foreach(DataRow r in ds.Tables["A"])
{
//Une ligne de la table parent est "r".

//Pour obtenir les lignes enfants attachés à cette ligne :
DataRow[] enfants;
enfants = r.GetChildRows("AInnerLinkB");
foreach(DataRow e in enfants)
//"e" est un enfant de la ligne "r"
}

Je vous recommande de faire des DataSet typés qui permettent d'avoir des
propriétés et des fonctions typés permettant la manipulation des relations
entre les tables..

Cordialement

--
Gilles TOURREAU
Responsable Informatique


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
zoltix
Gilles TOURREAU a écrit :
Le Thu, 15 Feb 2007 17:16:50 +0100, zoltix a écrit:

Bonjour,
Mon problème est assez simple.
J’ai un dataset avec deux tables la table A et la table B. J’ai créée
une liaison. Mais je n’arrive pas a voir mes données .
Table A ( Aid,Aname,….) et la table B( Bid,Bname,….) je voudrais faire
un jointure qui serait équivalent en Sql : select * from A INNER JOIN
B on A.Aname=B.Bname


Pourriez vous m’aider
Merci d’avance.

String sql;
String con;
SqlDataAdapter da;

con = ConfigurationSettings.AppSettings["conTest"];

sql ="SELECT Aid,Aname FROM A WHERE Aid>2";
da = new SqlDataAdapter(sql, con);
da.Fill(ds, "A");

sql = "SELECT Bid,Bname FROM B";
da.SelectCommand.CommandText = sql;
da.Fill(ds, "B");

ds.Relations.Add("AInnerLinkB", ds.Tables["A"].Columns["Aname"],
ds.Tables["B"].Columns["Bname"]);

Comment puis je voir les voir les donnée qui correspond un un sql (Sql
: select * from A INNER JOIN B on A.Aname=B.Bname)



Soit vous faites votre requête et stockez le résultat dans un DataSet,

sql = "select * from A INNER JOIN B on A.Aname=B.Bname";
da.SelectCommand.CommandText = sql;
da.Fill(ds, "Jointure");

Dans la table ds["Jointure"] vous aurez ainsi directement le résultat de
la jointure...

Soit vous parcourez vos tables ainsi :

//Parcourt de la table "parent"
foreach(DataRow r in ds.Tables["A"])
{
//Une ligne de la table parent est "r".

//Pour obtenir les lignes enfants attachés à cette ligne :
DataRow[] enfants;
enfants = r.GetChildRows("AInnerLinkB");
foreach(DataRow e in enfants)
//"e" est un enfant de la ligne "r"
}

Je vous recommande de faire des DataSet typés qui permettent d'avoir des
propriétés et des fonctions typés permettant la manipulation des
relations entre les tables..

Cordialement

--Gilles TOURREAU
Responsable Informatique


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr


Merci Beaucoup................
Nb :je pensais qu'il y'avait une solution directement avec les objets
dataset.
C'est la raison de ma question mais je vais implémenter avec sp.

Encore un grand merci pour votre réponse.
Avatar
zoltix
Gilles TOURREAU a écrit :
Le Thu, 15 Feb 2007 17:16:50 +0100, zoltix a écrit:

Bonjour,
Mon problème est assez simple.
J’ai un dataset avec deux tables la table A et la table B. J’ai créée
une liaison. Mais je n’arrive pas a voir mes données .
Table A ( Aid,Aname,….) et la table B( Bid,Bname,….) je voudrais faire
un jointure qui serait équivalent en Sql : select * from A INNER JOIN
B on A.Aname=B.Bname


Pourriez vous m’aider
Merci d’avance.

String sql;
String con;
SqlDataAdapter da;

con = ConfigurationSettings.AppSettings["conTest"];

sql ="SELECT Aid,Aname FROM A WHERE Aid>2";
da = new SqlDataAdapter(sql, con);
da.Fill(ds, "A");

sql = "SELECT Bid,Bname FROM B";
da.SelectCommand.CommandText = sql;
da.Fill(ds, "B");

ds.Relations.Add("AInnerLinkB", ds.Tables["A"].Columns["Aname"],
ds.Tables["B"].Columns["Bname"]);

Comment puis je voir les voir les donnée qui correspond un un sql (Sql
: select * from A INNER JOIN B on A.Aname=B.Bname)



Soit vous faites votre requête et stockez le résultat dans un DataSet,

sql = "select * from A INNER JOIN B on A.Aname=B.Bname";
da.SelectCommand.CommandText = sql;
da.Fill(ds, "Jointure");

Dans la table ds["Jointure"] vous aurez ainsi directement le résultat de
la jointure...

Soit vous parcourez vos tables ainsi :

//Parcourt de la table "parent"
foreach(DataRow r in ds.Tables["A"])
{
//Une ligne de la table parent est "r".

//Pour obtenir les lignes enfants attachés à cette ligne :
DataRow[] enfants;
enfants = r.GetChildRows("AInnerLinkB");
foreach(DataRow e in enfants)
//"e" est un enfant de la ligne "r"
}

Je vous recommande de faire des DataSet typés qui permettent d'avoir des
propriétés et des fonctions typés permettant la manipulation des
relations entre les tables..

Cordialement

--Gilles TOURREAU
Responsable Informatique


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr


C'est super les deux version marche ..........
Merci