Accueil > Forum > > > > Probleme avec oledb
Probleme avec oledb
samedi 27 septembre 2008 à 01:54:11 |
Probleme avec oledb

Deeddolith
|
Bonjour, J'ai un petit soucis avec OLEDB, visiblement mes données ne sont pas toujours synchro avec ma base access. J'ai une application multi forms, avec laquelle j'interroge une base de donnée access J'appelle des forms supplémentaires en pour ajouter ou mettre a jours les données du form principal. Les données de mon form principal sont issues d'un dataset. J'utilise une fonction qui detruit et recrée les objets oledb pour mettre a jours mes données (paut etre pas la meilleur solution, mais la n'est pas le probleme). Lorsque, dans un form additionel, j'utilise une requete de type INSERT ou UPDATE ou DELETE en passant par la methode oledb.oledbCommand.executeScalar et appelle la methode pour rafraichir mon form principal, je n'ai pas de problemes. Par contre, lorsque, dans un form additionel (different de celui pre-cité), je met a jours une ligne a passant par un dataAdapter et appelle la methode pour rafraichir mon form principal, je n'obtient pas les données mises a jour. Pourtant, les données ont bien été écrites dans la base avant l'appelle de la mise a jour (j'ai verifié en mode pas a pas). Y aurait-il un cache qui traine quelque part ?
|
|
samedi 27 septembre 2008 à 10:47:53 |
Re : Probleme avec oledb

68manu
|
Salut, envoies un bout de code, ca sera plus simple pour resoudre cela. Manu
_____________________ No problems, only soluces
|
|
samedi 27 septembre 2008 à 12:17:48 |
Re : Probleme avec oledb

Deeddolith
|
Attention, va y avoir du sport  Dans ma fenetre principale: Public Class frm_mob 'Declaration des variables 'objets oledb Dim cmd As OleDb.OleDbCommand Dim da As OleDb.OleDbDataAdapter Dim ds As DataSet Dim dt As DataTable Dim rowNum AsInteger
Public Sub requery() Dim strSQL AsString
'recupere la requete SQL strSQL = cmd.CommandText 'destruction des objets oledb dt.Dispose() dt = Nothing da.Dispose() da = Nothing cmd.Dispose() cmd = Nothing 'creation des objets oledb cmd = New OleDb.OleDbCommand(strSQL, cn) da = New OleDb.OleDbDataAdapter(cmd) da.FillLoadOption = LoadOption.OverwriteChanges da.Fill(ds, "MOB") dt = ds.Tables("MOB") 'mise a jour des controles updateControls() EndSub End Class
Dans ma fenetre de mise a jours:
Public Class frm_mobsManager 'Declaration des variables 'mode représente la mise a jour des données, soit ajout (mode = "NEW"), soit modification (mode = "UPDATE") Dim mode AsString 'declaration des objets oledb Dim cmd As OleDb.OleDbCommand Dim da As OleDb.OleDbDataAdapter Dim ds As DataSet Dim dt As DataTable Dim rowNum AsInteger Dim strSQL AsString Dim cmdb As OleDb.OleDbCommandBuilder Dim dr As DataRow 'flux pour mettre a jour un picrurebox Dim stream As IO.MemoryStream
Private Sub cmd_ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_ok.Click 'tableaux d'octets pour gerer les imgages 'pictureData: données issues de l'images Dim pictureData AsByte() 'fieldData otentes OLE + image qui seront ecrit dans la base Dim fieldData AsByte() 'cmd qui sert a recuperer maxID, clef primaire Dim cmdMob As OleDb.OleDbCommand Dim maxID AsInteger
If (txt_nom.Text <> "") Then txt_nom.BackColor = System.Drawing.SystemColors.Window 'Mode Nouvelle ligne SelectCase mode Case"NEW" 'Ajour d'une nouvelle ligne au dataset dr = ds.Tables("MOB").NewRow 'recuperation de la valeur maxi de la clef primaire cmdMob = New OleDb.OleDbCommand("SELECT MAX(ID_MOB) FROM MOB", cn) maxID = cmdMob.ExecuteScalar() cmdMob.Dispose() cmdMob = Nothing 'valeur clef primaire dr("ID_MOB") = maxID + 1 'colonne TIME_KILLED doit valoir minimum 1 dr("TIME_KILLED") = 1 ds.Tables("MOB").Rows.Add(dr) Case"UPDATE" dr = dt.Rows(rowNum) EndSelect 'Lecture des valeurs controles et mise a jour de la ligne dr("NOM") = txt_nom.Text If (txt_lvl.Text = "") Then dr("LVL") = DBNull.Value Else dr("LVL") = txt_lvl.Text EndIf If (cmb_type.SelectedIndex = -1) Then dr("TYPE") = DBNull.Value Else dr("TYPE") = cmb_typeID.Items(cmb_typeID.SelectedIndex).ToString EndIf If (cmb_class.SelectedIndex = -1) Then dr("CLASS") = DBNull.Value Else dr("CLASS") = cmb_classID.Items(cmb_classID.SelectedIndex).ToString EndIf If (txt_comment.Text = "") Then dr("COMMENT") = DBNull.Value Else dr("COMMENT") = txt_comment.Text EndIf If (pic_mob.Image IsNothing) Then 'Si aucune image n'est selectionnée, alors on lit une image par defaut, issue de la table SYS_DATA de la base cmdMob = New OleDb.OleDbCommand("SELECT NO_PICTURE FROM SYS_DATA", cn) dr("PICTURE") = cmdMob.ExecuteScalar() cmdMob.Dispose() cmdMob = Nothing Else 'Si une image est selectionnée 'sauvegarde de l'image sur disque pic_mob.Image.Save(Application.StartupPath & "\tmp.bmp", Imaging.ImageFormat.Bmp) 'lecture de l'image a partir du disque pictureData = My.Computer.FileSystem.ReadAllBytes(Application.StartupPath & "\tmp.bmp") 'destruction du fichier temporaire Kill(Application.StartupPath & "\tmp.bmp") 'preparation des données de l'image + entetes OLE ReDim fieldData(0 To OLEheader.Length + pictureData.Length + OLEfooter.Length - 1) 'ajout des entetes OLE de debut (sauvegardées au demerrage de l'application) Array.Copy(OLEheader, fieldData, OLEheader.Length) 'ajout de l'image Array.Copy(pictureData, 0, fieldData, OLEheader.Length, pictureData.Length) 'ajout des entetes OLE de fin (sauvegardées au demarrage de l'application) Array.Copy(OLEfooter, 0, fieldData, OLEheader.Length + pictureData.Length, OLEfooter.Length) dr("PICTURE") = fieldData EndIf cmdb = New OleDb.OleDbCommandBuilder(da) 'mise a jour de la base de donnée da.Update(ds, "MOB") 'rafraichir les objets oledb ds.Clear() da.Fill(ds, "MOB") dt = ds.Tables("MOB") cmdb.Dispose() cmdb = Nothing mode = "NOTHING" 'mise a jour des controles updateControls() 'mise a jour de la fenettre frm_mob frm_mob.requery() Else txt_nom.BackColor = Color.Red EndIf EndSub End Class
J'espere que c'est suffisment clair. (PS: ne vous preoccuper pas trop du traitement de l'image). Sinon n'hesitez pas a en demander plus.
|
|
samedi 27 septembre 2008 à 15:07:19 |
Re : Probleme avec oledb

68manu
|
Salut,
excuses moi j'ai mis un peu de temps... mais il me reste quelque chose de pas clair... la variable mode est-elle initialisee a un moment donne ? Car si elle ne l'est pas, tout ton select case n'est pas lu par ton programme.
Pour l'instant j'ai pas mieux. Je cherche encore MAnu
_____________________ No problems, only soluces
|
|
samedi 27 septembre 2008 à 17:07:46 |
Re : Probleme avec oledb

Deeddolith
|
Oui, elle est initialisée. Au depart, mode est initialisé a "NOTHING" Dans ma fenetre j'ai 2 autre boutons: New et Update Apres un click sur New, j'initialise mode a "NEW" Apres un click sur Update, j'initialise mode "UPDATE"
J'ai egalement 2 autre boutons: Ok (dont le code est ci-dessus), et Cancel. Après un click sur Cancel, j'initialise mode a "NOTHING"
|
|
dimanche 28 septembre 2008 à 19:39:42 |
Re : Probleme avec oledb

Deeddolith
|
Réponse acceptée !
c'est bon, j'ai trouvé. Dans la procedure requery, j'ai oublié de detruire mon ds !
|
|
Cette discussion est classée dans : form, données, principal, appelle, oledb
Répondre à ce message
Sujets en rapport avec ce message
Manipuler des variables sur plusieurs feuilles [ par fred ]
Bonjour,Comment fait-on pour manipuler une meme variable declaree sur le form principal sur d'autres feuilles ?ex: J'ai un tableau Data(500) as byte s
FORM en ASP à mettre en .txt URGENT !!! [ par Zenway ]
J'aimerais récupérer les données d'un formulaire HTML, et les écrires dans un fichier TXT selon ce format :Nom = ...; Prenom = ...; etc...J'arrive bie
FORM en ASP à récupérer en .TXT [ par Zenway ]
J'aimerais récupérer les données d'un formulaire HTML, et les écrires dans un fichier TXT selon ce format :Nom = ...; Prenom = ...; etc...J'arrive bie
ajout de données dans un datagrid [ par seb ]
bonjour à tous,J'ai un form avec une vue maitre-détail. Dans la section détails, j'utilise un datagrid pour afficher les détails.La source des ces sec
Ne pas perdre les données d'un form quand on clique sur la croix [ par JackySunce ]
JackySuncecomment qu'on fait, quand on clique sur la croix d'un form pour que les valeurs présentes dans les champs "Txt" ne s'effacent pas (pour conc
instance de form avec actualisation des données [ par akteos ]
Hello.J'ai un pb, j'aimerais lancer plusieurs instances d'un même form mais que chacun garde ses propres données.En clair lorsque je clique sur un bou
Récuperer données TextBox depuis une autre Form [ par reiben ]
Hello à tous,G un probl avec une TextBox.G 2 Form (Form1 et Form2), la form1 à un champ TextBox et la form2 a un label pour afficher l'entrée du champ
Need help ! probleme avec un grid svp [ par Angelus ]
salut,j'ai un soucis avec un grid, au chargement de ma form, j'ai des données qui s'affichent dans ma grid, le problème étant que lorsque je vais sur
Echange données entre form .net [ par gregdevils ]
Je suis débutant en .net et je trouve qu'il est plus difficile de programmer sous .net que sous vb6.C'est assez déroutant.Mon programme est un mdi.Dan
Imprimentes [ par Morgoth666 ]
Bonjour, j'ai petit problème avec un paramètre d'un état.J'ai un formulaire dans lequelle j'ai un sous formulaire, dans le sous form il y a des donnée
Livres en rapport
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
LISTER KEYS.KEYLISTER KEYS.KEY par Onin42
Cliquez pour lire la suite par Onin42
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|