patdan
Messages postés37Date d'inscriptionlundi 20 septembre 2004StatutMembreDernière intervention 3 avril 2009
-
26 déc. 2007 à 16:46
patdan
Messages postés37Date d'inscriptionlundi 20 septembre 2004StatutMembreDernière intervention 3 avril 2009
-
27 déc. 2007 à 21:31
Bonjour,
je débute en Visual studio 2005, langage VB Net et travaille avec une BDD Access 2002
J'ai cherché partout et je ne m'en sors tjrs pas
Voici une partie du code :
Sub Proprio(ByVal Choix)<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
If Choix = "Ajout"Then
strSql "SELECT count(*) as Resul FROM ASLProprio WHERE ProprioDatDep IS NULL AND ProprioNumLot '" & TxtPNLot.Text & "'"
ObjetCommand = New OleDbCommand(strSql)
ObjetDataAdapter = New OleDbDataAdapter(ObjetCommand)
ObjetCommand.Connection() = ObjetConnection
ObjetDataSet.Clear()
ObjetDataAdapter.Fill(ObjetDataSet, "ASLProprio")
> Aucune valeur donnée pour un ou plusieurs des paramètres requis.
*********************
L'erreur ci-dessus apparaît. Je crois que j'avais réussi à la faire disparaître (mais je ne sais plus comment),
Pourtant j'ai vu des exemples et j'ai l'impression que mon code est identique ??? !!!
En fait, j'ai aussi un autre formulaire avec un ajout d'enregistrement, mais sur une table vide, je galère aussi (le champ n'existe pas ds la table ) : c'est clair , mais il EXISTE!!
Merci d'avance aux courageux qui me sortiront de là!!
patdan
Messages postés37Date d'inscriptionlundi 20 septembre 2004StatutMembreDernière intervention 3 avril 2009 27 déc. 2007 à 21:31
Eh bien la réponse je me la donne :
A force de galérer, j'ai rajouté ces lignes au début de mon ajout :
strSql = "SELECT * FROM ASLProprio"
ObjetCommand = New OleDbCommand(strSql)
ObjetDataAdapter = New OleDbDataAdapter(ObjetCommand)
ObjetCommand.Connection() = ObjetConnection
ObjetDataSet.Clear()
ObjetDataAdapter.Fill(ObjetDataSet, "ASLProprio")
ObjetDataTable = ObjetDataSet.Tables("ASLProprio")
ObjetDataRow = ObjetDataSet.Tables("ASLProprio").NewRow
ChargerChamps()
ObjetDataSet.Tables("ASLProprio").Rows.Add(ObjetDataRow)
ObjetCommandBuilder = New OleDbCommandBuilder(ObjetDataAdapter)
ObjetDataAdapter.Update(ObjetDataSet, "ASLProprio")
ObjetDataSet.Clear()
ObjetDataAdapter.Fill(ObjetDataSet, "ASLProprio")
ObjetDataTable = ObjetDataSet.Tables("ASLProprio")
Et voilà cela marche à présent
Ce qui me chagrine c'est que j'ai l'impression que il faut sans cesse retaper des tas de lignes similaires c'est lourd ou il y a une autre soluce mais je démarre : je ne connais pas
patdan
Messages postés37Date d'inscriptionlundi 20 septembre 2004StatutMembreDernière intervention 3 avril 2009 26 déc. 2007 à 19:19
Merci de m'avoir répondu.
En fait, j'ai supprimé les lignes :
ObjetDataAdapter.Fill(ObjetDataSet, "ASLProprio") ==>Aucune valeur donnée pour un ou plusieurs des paramètres requis.
ObjetDataTable = ObjetDataSet.Tables("ASLProprio")
et je passe maintenant directement sur :'else ajouter : OK n'existe pas dans la base<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
et lorsque la sub ChargerChamps s'éxécute :
La colonne 'ProprioNumLot' n'appartient pas à la table ASLProprio
or ce champ APPARTIENT pourtant à la table ASLProprio et est orthographié de la même manière
patdan
Messages postés37Date d'inscriptionlundi 20 septembre 2004StatutMembreDernière intervention 3 avril 2009 27 déc. 2007 à 13:57
Salut,
Bien sûr que cela paraît clair , donc cela a été mon premier contrôle. Mais je persiste et signe :
ProprioNumLot APPARTIENT à la table ASLProprio et est orthographié de la même manière
Donc qque chose est mal programmé et provoque cette erreur , mais QUOI
That is the QUESTION ???
Et comme je démarre dans ce gros bazar où l'on passe son temps à réécrire sans cesse la même chose, je suis paumée noyée....A moins que l'on puisse faire + simple mais j'ai parcouru des tas de sites depuis des jours et je sature..
Peut-être aurais-je dû choisir un autre langage??? mais pour ce proj il est trop tard!!
Merci encore d'essayer de me sortir de là car "je n"ai plus 20 ans hélas..."
PS Je viens de retester, mais à force d'essayer des modifs, je plane : j'ai de nouveau le message du 1er post
cs_djerbino
Messages postés56Date d'inscriptionmercredi 5 décembre 2007StatutMembreDernière intervention 2 novembre 2009 27 déc. 2007 à 14:54
voici un code qui fonctionne correctement
sa devrai surement t'aider
il reste a modifier le nom de la base ,les tables et les champ
Imports
System
Imports
System.Data
Imports
System.Data.OleDb
Imports
Microsoft.VisualBasic
Public
Class Form2
'Déclaration de la variable pour la connection
Private cnx
As OleDbConnection
'Déclaration de la variable pour la commande
Private cmd
As OleDbCommand
'Déclaration de la variable pour le dataadapter
Private dta
As OleDbDataAdapter
'Déclaration de la variable pour le dataset
Private dts
As DataSet
'Déclaration de la variable pour la requête
Private sql
As
String
'Déclaration de la variable pour la datatable
Private dtt
As DataTable
'Déclaration de la variable pour le datarow
Private dtr
As DataRow
'Déclaration de la variable pour le Nº de l'enregistrement
Private rownum
As
Integer
'Déclaration de la variable pour la connectionstring
Private cnxstr
As
String
'Déclaration de la variable pour le commandbuilder
Private cmdb
As OleDbCommandBuilder
Private
Sub Form2_Load(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles
Me.Load
'ouverture de la connection(à partir du répertoire de l'application)sur la même lignecnxstr "provider microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath &
"\base.mdb;"cnx =
New OleDbConnectiondts New DataSetcnx.ConnectionString cnxstr
cnx.Open()
'Création de la requête sqlsql =
"select table.* from table"
'Création de la commande et on l'instancie (sql) cmd =
New OleDbCommand(sql)
'Création du dataadapter (dta) et on l'instancie (cmd)dta =
New OleDbDataAdapter(cmd)
'On instancie la commande (cmd) à la connection (cnx) cmd.Connection() = cnx
'On charge le dataset (dts) grace à la propriété fill du dataadapter (dta)dta.Fill(dts,
"table")
'On charge la datatable (dtt) grace à la propriété tables du dataset (dts) dtt = dts.Tables(
"table")
End
Sub
Private
Sub enregistrer_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles enregistrer.Click
'crátion d'une nouvelle ligne avec les données des textboxdtr = dts.Tables(
"table").NewRow
dtr(
"champ1") =
Me.texbox1.Textdtr(
"champ2") =
Me.textbox2.Text
'ajout de la ligne dans le DataSetdts.Tables(
"table").Rows.Add(dtr)
'création et exécution du commandbuilder pour mettre à jour le DataAdaptercmdb =
New OleDbCommandBuilder(dta)
'mise à jour des données du dataadapter(dta)à partir du commandbuilder (cmdb)dta.Update(dts,
"table")
'on vide le dataset pour le recréer avec les nouvelles données dts.Clear()
patdan
Messages postés37Date d'inscriptionlundi 20 septembre 2004StatutMembreDernière intervention 3 avril 2009 27 déc. 2007 à 17:52
Merci
Mais hélas mon code correspond à cela : j'ai bien contrôlé
La seule erreur qui me reste maintenant est :
La colonne 'ProprioNumLot' n'appartient pas à la table ASLProprio
Ce champ est le 1er que je charge, mais pr les autres c'est pareil
'On vide le DataSet et on le 'recharge' de nouveau.
ObjetDataSet.Clear()
ObjetDataAdapter.Fill(ObjetDataSet,
"ASLProprio")
ObjetDataTable = ObjetDataSet.Tables(
"ASLProprio")
Donc, je galère tjrs. Il doit manquer peut_être qque chose comme un lien...Allez donc savoir, surtout que dans la même SUB, j'ai la modif qui elle fonctionne
cs_djerbino
Messages postés56Date d'inscriptionmercredi 5 décembre 2007StatutMembreDernière intervention 2 novembre 2009 27 déc. 2007 à 18:18
bon change ProprioNumLot en une clé primaire et met la auto-increment et efface la ligne si elle doit pas etre forcement saisie
sinon sa doit aller la ton code est correct sauf verifie encore une foi le syntaxe de la table ProprioNumLot dans ta db
patdan
Messages postés37Date d'inscriptionlundi 20 septembre 2004StatutMembreDernière intervention 3 avril 2009 27 déc. 2007 à 18:50
Merci djerbino de suivre mon pb, mais hélas ce champ est obligatoire et son nom est bon.
Par sécurité, je l'ai même retapé. De toute façon les autres champs ne sont pas reconnus non plus
Donc il manque qque chose qque part pour que ces champs soient reconnus MAIS ?????
........si je savais quoi , je ne serai pas là