Pb dao3.6 sous vb.net

cs_AVI17 Messages postés 47 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 26 janvier 2010 - 27 déc. 2006 à 16:20
cs_AVI17 Messages postés 47 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 26 janvier 2010 - 28 déc. 2006 à 18:16
Je reconvertis mes applis de vb6 en vb.net en conservant dans un premier temps la gestion sous dao3.6

Dans un module j'ai défini, ma base, mes tables par ex :

Public Articles
As dao.Recordset
Articles = Data_Base.OpenRecordset(
"Articles", dao.RecordsetTypeEnum.dbOpenTable)

puis dans une feuille
j'ai mis le code suivant pour charger une combo

IfArticles.RecordCount <> 0
Then
      Articles.Index =
"PrimaryKey"
      Articles.MoveFirst()

      Do
Until Articles.EOF
         cbo_Nom.Items.Add(Articles.Fields(
"Nom").Value)

         Articles.MoveNext()
      
Loop
End
If

Le pgm s'arrête sur la zone en rouge et indique : utilisez le mot clé New pour créer une instance

Et là je suis perdu, je ne sais plus quoi faire !!

Si quelqu'un pouvait m'aider ce serait syma.
Merci d'avance à tous
AVI17

8 réponses

Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
27 déc. 2006 à 16:33
Salut,

Peut-être qu'avec :

Public Articles As New dao.Recordset

ça marcherait mieux ?
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
27 déc. 2006 à 16:35
Ou alors :

Public Articles As dao.Recordset
Articles = New Data_Base.OpenRecordset("Articles", dao.RecordsetTypeEnum.dbOpenTable)
0
cs_AVI17 Messages postés 47 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 26 janvier 2010
27 déc. 2006 à 16:42
j'ai déjà essayé les 2 cas, cela ne marche pas car new avec dao.recordset est refusé,  même chose pour articles= new data_base .......
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
27 déc. 2006 à 16:45
Que vaut Articles juste après cette ligne Articles = Data_Base.OpenRecordset(
"Articles", dao.RecordsetTypeEnum.dbOpenTable) ???

Tu n'aurais pas une erreur sur l'ouverture du recordset ??

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0

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

Posez votre question
cs_AVI17 Messages postés 47 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 26 janvier 2010
28 déc. 2006 à 08:37
Après je n'ai plus rien de spécial. J'ai repris mon pavé que j'avais sous vb6, traduit en vb.net.
Dans le module où je fais l'ouverture de base et l'ouverture des tables via openrecordset, j'accède bien à une table sans pb.

Mon pb vient quand j'affiche une feuille et que je veux accèder à ma table articles et où il me demande d'utiliser New pour créer une instance.
Et new ne marche pas avec


Public Articles as new dao.recordset,


ni avec


Articles= new database.opendata......

Vb6 était vraiment + simple
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
28 déc. 2006 à 10:12
Si VB te demande de mettre un New, c'est que ta variable est égale à Nothing très certainement.

Plusieurs possibilités, soit la base ou le recordset a été fermé, ou n'a pas encore été ouvert au moment de l'appel de ton instruction.
Soit lors de la dernière ouverture du recordset ou de la dernière utilisation, tu as eu une erreur et il n'y a plus de recordset affecté à Articles.

Autre possibilité, Articles est normalement déclarée comme variable globale pour etre vue par ton le programme. Mais si dans ta procédure, tu as une redéclaration de Articles comme variable locale, c'est la variable locale qui est prise et non pas la variable globale.
L'assistant de convertion, s'il a eu un problème quelconque sur la variable globale, ne trouvant pas la variable ni en local ni en global, fait parfois cette redéclaration en local

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_AVI17 Messages postés 47 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 26 janvier 2010
28 déc. 2006 à 17:22
J'ai tout vérifié, je ne trouve rien, par contre si je continue en pas à pas, j'affiche mal ma feuille enfant mais je vois mon combo et il est chargé correctement. Est-ce que cela viendrait de ma feuille enfant que j'affiche mal car je n'ai pas compris la tecnnique sous vbNet.
 
ma feuille enfant s'appelle f_articles
je fais
f_articles.parent=me
f_articles.show()

et elle ne s'affiche en maximum à l'écran malgré le paramétrage vbmaximum

si tu as une idée. Sinon je crois que je vais abandonné vbnet et rester en vb6, mais je crois que sous vista il ne fonctionnera plus

Merci de tes réponses, c'est sympa
0
cs_AVI17 Messages postés 47 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 26 janvier 2010
28 déc. 2006 à 18:16
Casy,
j'ai avancé, même beaucoup pour moi. j'ouvre ma base et mes recordsets avant d'afficher ma feuille enfant et çà marche, il ne reste plus qu'à trouver  la solution pour afficher ma feuille enfant au maximum de l'écran malgré qu'elle soit en windowstate=maximum.

Merci encore d'avoir passé un peu temps sur mon pb, cela m'a permis d'avancer;
0
Rejoignez-nous