Problème de code

Le_Martien Messages postés 12 Date d'inscription vendredi 3 septembre 2004 Statut Membre Dernière intervention 25 novembre 2007 - 4 nov. 2006 à 14:25
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 - 8 nov. 2006 à 15:51
Bonjour a tous et a toutes.



Il y a quelques temps, j’a crée une petite application en vb6 te je suis en train de la refaire en vb 2005 mais je n’arrive pas a faire tourner ce petit bout de code :




<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 






Private Sub Enring_Click()






    Dim cnn As New ADODB.Connection






    Dim cnn1 As New ADODB.Connection






   

Dim rst As New ADODB.Recordset






    Dim i As Integer






   








   

cnn1.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Le_Martien\Mes documents\Tfe\Tfe.mdb;Persist Security Info=False")






    rst.Open "SELECT InterRecettesIngrédients.Réf_Recette, InterRecettesIngrédients.Réf_Ingrédients, InterRecettesIngrédients.Quantités, InterRecettesIngrédients.val_metrique FROM InterRecettesIngrédients", cnn1, adOpenDynamic, adLockOptimistic






   

i = 0






    Me.DataGrid.Row = i






    Do






        rst.AddNew






        rst!Réf_Recette = Me.DataGrid.Columns(0)






       

rst!Réf_Ingrédients = Me.DataGrid.Columns(1)






        rst!Quantités = Me.DataGrid.Columns(2)






       

rst!val_metrique = Me.DataGrid.Columns(3)






        rst.Update






        i = i + 1






        Me.DataGrid.Row = i






    Loop Until DataGrid.Columns(4) = ""






   

cnn1.Close






    Set cnn1 = Nothing






    MsgBox ("Les ingrédients ont été ajoutés")






   








    cnn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Le_Martien\Mes documents\Tfe\Tfe.mdb;Persist Security Info=False")






    cnn.Execute "DELETE * FROM Ajout_Ingr_Tmps"





End Sub




 






Si quelqu'un a une idée, elle serrait la bien venue.



Merci.

12 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
4 nov. 2006 à 14:37
Déjà commence par remplacer ton entete de fonction par sa version .NET :
    Private Sub EnRing_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EnRing.Click

Ensuite le controle DataGrid n'existe plus en .NET, il est remplacer par le controle DataGridView.
Certaines propriétés et méthodes change, il te faut donc reprendre le code.

Ensuite as-tu ajouter la référence ADO à ton projet ? sinon adodb ne sera pas reconnu.

PS : Tu as toujours la possibilité d'ajouter l'ancient composant DataGrid de VB6, mais tu perds les avantages que peux apporter .NET.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
4 nov. 2006 à 16:12
Voici un petit exemple d'utilisation en VB.Net pour lire les données, attention ici j'utilise un DataReader, avec un DataSet c'est assez différent. Sinon tu as une autre possibilité : dans les Server Explorer tu ajoute une connection sur ta base Access puis tu l'explore et une fois sur la tabe voulue, tu fait un drag and drop de celle-ci sur ta form. là VS te créer tout seul les objets de connections et d'adaptation, il ne te reste plus qu'à faire un clic droit sur l'adaptater et de générer le DataSet ensuite dans ton code vois la partie 2 ci-dessous/

'Partie A

imports system.data
Private Sub Enring_Click()<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>







Dim



Conn1

As



New
OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Le_Martien\Mes documents\Tfe\Tfe.mdb;Persist Security Info=False")


Dim
SQLComm1

As



New
OleDb.OleDbCommand("Select * From toto", Conn1)


Dim
DR

As
OleDb.OleDbDataReader


Try

SQLComm1.Connection.Open()







Catch

SQLComm1.Connection.Close()


SQLComm1.Connection.Open()







End



Try

DR = SQLComm1.ExecuteReader







Do



Until
DR.ReadMessageBox.Show(DR.GetString(0))


Loop



End Sub



'Partie B

Dim DS0 as new DataSet1
oledbdataadapter1.fill(ds0)   'Là ton DS0 est remplis tu peux éxactement l'utiliser comme ton RS



Chris...


Web :
Firstruner
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
5 nov. 2006 à 02:34
Il faut que tu importes l'API adodb dans ton programme.

Redman
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
5 nov. 2006 à 13:44
Pardon de venir mettre le bordel mais justement le .Net est là pour éviter d'importer API & companie, pleins d'outils sont dispo avec le .Net Framework, sinon autant rester en VB6 et continuer de surcharger les softs ;)

Amicalement

Chris...
Web : Firstruner
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
5 nov. 2006 à 13:58
Tout à fait d'accord avec chris....

Pas besion d'api adodb ou quoique ce soit.

Il faut mettre la référence .NET d'ADODB.

Pourquoi aller chercher ailleurs puisque c'est inclue dans le framework.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
Le_Martien Messages postés 12 Date d'inscription vendredi 3 septembre 2004 Statut Membre Dernière intervention 25 novembre 2007
6 nov. 2006 à 12:08
Chris, merci pourtaréponsemais je crois que tu m'as mal compris.
Dans mon soft, je ne veux pas lire les données de la base de donnnées mais écrire les donnees de mon datagrid dans la base de données.
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
6 nov. 2006 à 12:40
Ok, alors faisons simple ;)

Ajoute ta base à l'explorateur de serveur (Server explorer) puis fait un drag/drop de la table voulue sur ta form
ensuite fait un clic droit sur le oledbdataadapter1 et choisi : générer le dataset (generate dataset)
puis dans ton code :

pour charger ta base :

dim DS0 as new dataset1
OLEDBdataadapter1.fill(DS0)   'Charge la base

Pour valider les altération de la base :

oledbdataadapter1.update(ds0)   'Met à jour (ajout, suppression, modification)

Pour modifier tes datas rien de plus simple, tu repère l'index de la ligne à modifier, ensuite tu modifi les donnée comme ceci :

ds0.tables(0).rows(i).item("TrucMuche") = ZZZ

ou

ds0.tables("MaTable").rows(i).item("TrucMuche") = ZZZ

où ds0 est le dataset selon l'objet dataset
où tables(0) est la table correspondante 0 est l'index de la table ou alors dans l'exemple 2 tu peux noter directement le nom de la table
où i est l'index de la ligne à ajuster
et TrucMuche est le nom de la colonne à modifier

Chris...
Web : Firstruner
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
7 nov. 2006 à 16:26
cboulas, t bête ou quoi adodb ne fait pas partie de VB.Net et toi tu nous parle de OleDB ca ne fonctionne pas pour AdoDB !

Redman
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
7 nov. 2006 à 16:37
Mon cher OneHacker lorsque tu sera certifier MCD comme moi tu pourra comparer tes idée avec les mienne, vérifie avant de dire quoi de ce soit...

Chris...
Web : Firstruner
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
7 nov. 2006 à 16:38
OneHacker, tu ouvre n'importe quel projet .Net.

tu fais Projet/Propriétés, onglet référence, Ajouter, onglet .NET et tu verra la référence adodb apparaitre dans les premières lignes.

Et je m'en fous que ce soit une simple surcouche d'acces pour .NET, c'est toujours plus propre que de passer par une référence COM ou une API.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
8 nov. 2006 à 15:41
adodb est une référence/API je te signale.

Redman
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
8 nov. 2006 à 15:51
Et bien, je vois que soit il n'y a pas d'aquis soit il n'y en a jamais eu, le framework étant charger au moment du chargement de l'O.S. si l'on appel ça référence ce n'st pas pour rien sinon on appelerais cela API ou DLL (au choix).


Vu que le framework est lancer, on fait référence à une partie du framework, le framework passant à 70% outre le kernel, kernel qui lui gère les API



Chris...


Web :
Firstruner
0
Rejoignez-nous