OVH Cloud OVH Cloud

URGENT SVP Débutant ADO.NET

5 réponses
Avatar
DM
Merci pour votre aide :

Mon programme doit se connecter à une base ACCESS 97 ou SQL Server 2000.
J'ai donc choisi d'utiliser OleDb.

Puis mon programme doit supprimer des lignes (enregistrements) en double
dans une table qui n'a pas de clé primaire et pour le moment je ne doit pas
les créer!

Une partie de mon programme (non présenté ici) se connecte à la base de
données et retient les numéros de lignes à supprimer dans ma table. La partie
suivante de mon programme illustrée ci-dessous doit supprimer ces lignes en
double. J'utilise pour ce faire le DataAdapter, le DataSet, le DataTable et
le DataRowCollection. Ce programme supprime bien les ligne dans le
DataRowCollection mais je ne constate aucune répercution dans la table de la
base de données; les lignes en double ne sont pas supprimées!??? Voici le
programme :

'Déclaration
Dim objOleDbCommand As New OleDbCommand()
Dim objOleDbDataAdapter As OleDbDataAdapter
Dim objDataRowCollection As DataRowCollection
Dim objDataSet As New DataSet()
Dim objDataTable As New DataTable()

'Connexion à la table...
nomTable="matable"
objOleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM matable ORDER
meschamps", ObjOleDbConnection)
objOleDbDataAdapter.Fill(objDataSet, nomTable)
objDataTable = objDataSet.Tables(nomTable)
objDataRowCollection = objDataTable.Rows

'Supprime la ligne 2
objDataRowCollection(2).Delete()
objDataRowCollection(5).Delete()

'Accèpte les changements
objDataTable.AcceptChanges()
objDataSet.AcceptChanges()
objOleDbDataAdapter.Update(objDataSet, nomTable)

5 réponses

Avatar
DP
J'ai le même problème et j'attend donc qu'une âme charitable se penche sur
notre souci avec impatience :=)

DP
Avatar
zhjmwoek
http://www.ardice.com/Computers/Programming/Databases/ADO/
Avatar
dgsmgvqt
http://www.ardice.com/Computers/Programming/Databases/ADO/ADO.NET/
Avatar
MyriamB
Ce ne sais pas si ça peut vous aider mais voici ma procedure pour supprimer
un enregistement dans une base access


Déclarer les objets paramètres :
Dim Param_1 As New OleDb.OleDbParameter("Nom_Prenom_Adm",
OleDb.OleDbType.LongVarChar)
Dim Param_2 As New OleDb.OleDbParameter("Adresse",
OleDb.OleDbType.LongVarChar)

*Création du texte de la requête avec les paramètres "?" et de l'objet
commande SQL avec affectation de la requête
txt_sql1 = "INSERT INTO T_Administres_Entreprises " & _
"(Nom_Prenom_Adm,Adresse, Telephone) " & _
"VALUES (?,?,?)"

Dim sql_Cde As New OleDb.OleDbCommand()
sql_Cde.CommandText = txt_sql1

*Affectation des valeurs aux objets paramètres
Param_1.Value = TB_Nom.Text
Param_2.Value = TB_Adr.Text
Param_3.Value = TB_Tel.Text

*Ajout des paramètres à la commande SQL (attention l'ordre suit celui du
texte de la requette)
sql_Cde.Parameters.Add(Param_1)
sql_Cde.Parameters.Add(Param_2)
sql_Cde.Parameters.Add(Param_3)

*Exécution de la commande SQL
Connection1.Open()

sql_Cde.Connection = Connection1
sql_Cde.ExecuteNonQuery()
Connection1.Close()

*Vider la liste des paramètres pour en affecter d'autre
sql_Cde.Parameters.Clear()



"DM" a écrit :

Merci pour votre aide :

Mon programme doit se connecter à une base ACCESS 97 ou SQL Server 2000.
J'ai donc choisi d'utiliser OleDb.

Puis mon programme doit supprimer des lignes (enregistrements) en double
dans une table qui n'a pas de clé primaire et pour le moment je ne doit pas
les créer!

Une partie de mon programme (non présenté ici) se connecte à la base de
données et retient les numéros de lignes à supprimer dans ma table. La partie
suivante de mon programme illustrée ci-dessous doit supprimer ces lignes en
double. J'utilise pour ce faire le DataAdapter, le DataSet, le DataTable et
le DataRowCollection. Ce programme supprime bien les ligne dans le
DataRowCollection mais je ne constate aucune répercution dans la table de la
base de données; les lignes en double ne sont pas supprimées!??? Voici le
programme :

'Déclaration
Dim objOleDbCommand As New OleDbCommand()
Dim objOleDbDataAdapter As OleDbDataAdapter
Dim objDataRowCollection As DataRowCollection
Dim objDataSet As New DataSet()
Dim objDataTable As New DataTable()

'Connexion à la table...
nomTable="matable"
objOleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM matable ORDER
meschamps", ObjOleDbConnection)
objOleDbDataAdapter.Fill(objDataSet, nomTable)
objDataTable = objDataSet.Tables(nomTable)
objDataRowCollection = objDataTable.Rows

'Supprime la ligne 2
objDataRowCollection(2).Delete()
objDataRowCollection(5).Delete()

'Accèpte les changements
objDataTable.AcceptChanges()
objDataSet.AcceptChanges()
objOleDbDataAdapter.Update(objDataSet, nomTable)



Avatar
Sylvain Lafontaine
À ma connaissance, le DataAdapter ne fera pas de modification sur la source
de donnée s'il n'y a pas eu de clef primaire de défini. Cependant, vous
n'êtes pas obligé d'utiliser une clef primaire réellement existante dans la
source de donnée; il vous suffit de définir une ou plusieurs colonnes de
votre DataTable comme étant la clef primaire à utiliser.

Je ne l'ai jamais fais moi-même mais une recherche dans l'aide en ligne sur
la propriété .PrimaryKey des DataTable devrait vous fournir tous les
renseignements requis.

S. L.

"DM" wrote in message
news:
Merci pour votre aide :

Mon programme doit se connecter à une base ACCESS 97 ou SQL Server 2000.
J'ai donc choisi d'utiliser OleDb.

Puis mon programme doit supprimer des lignes (enregistrements) en double
dans une table qui n'a pas de clé primaire et pour le moment je ne doit
pas
les créer!

Une partie de mon programme (non présenté ici) se connecte à la base de
données et retient les numéros de lignes à supprimer dans ma table. La
partie
suivante de mon programme illustrée ci-dessous doit supprimer ces lignes
en
double. J'utilise pour ce faire le DataAdapter, le DataSet, le DataTable
et
le DataRowCollection. Ce programme supprime bien les ligne dans le
DataRowCollection mais je ne constate aucune répercution dans la table de
la
base de données; les lignes en double ne sont pas supprimées!??? Voici le
programme :

'Déclaration
Dim objOleDbCommand As New OleDbCommand()
Dim objOleDbDataAdapter As OleDbDataAdapter
Dim objDataRowCollection As DataRowCollection
Dim objDataSet As New DataSet()
Dim objDataTable As New DataTable()

'Connexion à la table...
nomTable="matable"
objOleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM matable ORDER
meschamps", ObjOleDbConnection)
objOleDbDataAdapter.Fill(objDataSet, nomTable)
objDataTable = objDataSet.Tables(nomTable)
objDataRowCollection = objDataTable.Rows

'Supprime la ligne 2
objDataRowCollection(2).Delete()
objDataRowCollection(5).Delete()

'Accèpte les changements
objDataTable.AcceptChanges()
objDataSet.AcceptChanges()
objOleDbDataAdapter.Update(objDataSet, nomTable)