Bonjour
comment identifier un champ dont l'intitulé est "Long" comment un champ texte sur vb.net
merci
Version imprimable
Bonjour
comment identifier un champ dont l'intitulé est "Long" comment un champ texte sur vb.net
merci
Dans une requête SQL tu veux dire ? Mets le entre crochets : [Long]
je l'ai déjà mis mais elle n'a pas fonctionné.:(
je préfère donner plus de détail.
en fait j'ai développé un programme avec VB.net dans l'objectif est de générer un résultat qui sera écrit directement sur une table access, mon problème c'est que j'ai parmi les champs de la table un champ nommé "Long" lorsque le programme essaye d'écrire dans la table j'ai un message d'erreur. aprés le diagnostique j'ai trouvé que lorsque le résultat est généré VB.net fais une confusion entre l'intitulé du champ dans access avec le type de variable dans VB.net.
merci encore une autre fois
le message est:
Citation:
Erreur de syntaxe dans l'instruction insert into
Et le code ?
Montre aussi la requête qui est exécutée
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152 strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= \\Smi2007\dqe\DQE.mdb;" strSql = "SELECT C701_MaterOF.* FROM C701_MaterOF" ObjetConnection = New OleDbConnection() ObjetConnection.ConnectionString = strConn ObjetConnection.Open() ObjetCommand = New OleDbCommand(strSql) ObjetDataAdapter = New OleDbDataAdapter(ObjetCommand) ObjetCommand.Connection() = ObjetConnection ObjetDataAdapter.Fill(ObjetDataSet, "C701_MaterOF") ObjetDataTable = ObjetDataSet.Tables("C701_MaterOF") For j = 0 To i If Matrice(j, 4) > 0 Then ObjetDataRow = ObjetDataSet.Tables("C701_MaterOF").NewRow() ObjetDataRow(0) = NUMCDE ObjetDataRow(1) = NUMOF ObjetDataRow(2) = 1 ObjetDataRow(3) = JJ ObjetDataRow(4) = Matrice(j, 1) ObjetDataRow(5) = Matrice(j, 2) ObjetDataRow(6) = " " ObjetDataRow(7) = Matrice(j, 3) ObjetDataRow(8) = 0 If Matrice(j, 3) = "M2" Then ObjetDataRow(9) = Matrice(j, 4) * Matrice(j, 5) * Matrice(j, 6) ElseIf Matrice(j, 3) = "ML" Then ObjetDataRow(9) = Matrice(j, 4) * Matrice(j, 5) Else ObjetDataRow(9) = Matrice(j, 4) End If ObjetDataRow(10) = 0 ObjetDataRow(11) = 0 ObjetDataRow(12) = 0 ObjetDataRow(13) = 0 ObjetDataRow(14) = 0 ObjetDataRow(15) = 0 ObjetDataRow(16) = 0 ObjetDataRow(17) = Matrice(j, 4) If Matrice(j, 5) <> 0 Then ObjetDataRow(18) = Matrice(j, 5) Else ObjetDataRow(18) = 0 End If If Matrice(j, 6) <> 0 Then ObjetDataRow(19) = Matrice(j, 6) Else ObjetDataRow(19) = 0 End If ObjetDataRow(20) = 0 ObjetDataRow(21) = Matrice(j, 7) ObjetDataRow(22) = 0 ObjetDataRow(23) = 0 ObjetDataRow(24) = 0 ObjetDataRow(25) = 0 ObjetDataRow(26) = 0 ObjetDataRow(27) = 0 ObjetDataRow(28) = 0 ObjetDataRow(29) = 0 ObjetDataRow(30) = JJ ObjetDataRow(31) = 1 ObjetDataRow(32) = 1 ObjetDataRow(33) = 0 ObjetDataRow(34) = 0 ObjetDataRow(35) = 0 ObjetDataRow(36) = 0 ObjetDataRow(37) = Matrice(j, 8) ObjetDataRow(38) = False ObjetDataRow(39) = " " ObjetDataRow(40) = Date.Now.Date ObjetDataRow(41) = " " ObjetDataRow(42) = Date.Now.Date ObjetDataRow(43) = " " ObjetDataRow(44) = Date.Now.Date ObjetDataRow(45) = " " ObjetDataRow(46) = Date.Now.Date ObjetDataRow(47) = False ObjetDataRow(48) = 0 ObjetDataRow(49) = 0 ObjetDataRow(50) = 0 ObjetDataRow(51) = 0 ObjetDataRow(52) = 0 ObjetDataRow(53) = 0 ObjetDataRow(54) = 0 ObjetDataRow(55) = 0 ObjetDataRow(56) = NUMCDE ObjetDataRow(57) = " " ObjetDataRow(58) = 0 ObjetDataRow(59) = 0 ObjetDataRow(60) = 0 ObjetDataRow(61) = 0 ObjetDataRow(62) = 0 ObjetDataRow(63) = Matrice(j, 3) ObjetDataRow(64) = 0 ObjetDataRow(65) = 0 ObjetDataRow(66) = 0 ObjetDataRow(67) = 0 ObjetDataRow(68) = 0 ObjetDataRow(69) = 0 ObjetDataRow(70) = 100 ObjetDataRow(71) = True ObjetDataRow(72) = True ObjetDataRow(73) = " " ObjetDataRow(74) = " " ObjetDataRow(75) = 0 ObjetDataRow(76) = Matrice(j, 3) ObjetDataRow(77) = 0 ObjetDataRow(78) = " " ObjetDataRow(79) = " " ObjetDataRow(80) = " " ObjetDataRow(81) = " " ObjetDataRow(82) = " " ObjetDataRow(83) = Matrice(j, 5) * 1000 ObjetDataRow(84) = Matrice(j, 6) * 1000 ObjetDataRow(85) = 0 ObjetDataRow(86) = 0 ObjetDataRow(87) = " " ObjetDataRow(88) = " " ObjetDataRow(89) = " " ObjetDataRow(90) = " " ObjetDataRow(91) = " " ObjetDataRow(92) = " " ObjetDataRow(93) = 0 ObjetDataRow(94) = 0 ObjetDataRow(95) = False ObjetDataRow(96) = Matrice(j, 9) ObjetDataRow(97) = 0 ObjetDataRow(98) = " " ObjetDataRow(99) = Matrice(j, 1) ObjetDataRow(100) = 0 ObjetDataRow(101) = System.DBNull.Value ObjetDataRow(102) = False ObjetDataRow(103) = 1 ObjetDataRow(104) = 0 ObjetDataRow(105) = 0 ObjetDataRow(106) = Matrice(j, 4) ObjetDataRow(107) = True ObjetDataRow(108) = 0 JJ = JJ + 1 ObjetDataSet.Tables("C701_MaterOF").Rows.Add(ObjetDataRow) ObjetCommandBuilder = New OleDbCommandBuilder(ObjetDataAdapter) ObjetDataAdapter.Update(ObjetDataSet, "C701_MaterOF") ObjetDataSet.Clear() ObjetDataAdapter.Fill(ObjetDataSet, "C701_MaterOF") End If ProgressBar1.Value += 2 Next j ObjetConnection = Nothing ObjetCommand = Nothing ObjetDataAdapter = Nothing ObjetDataSet = Nothing ObjetDataTable = Nothing ObjetDataRow = Nothing
Euh... ta table a 109 champs ? et tu les identifies uniquement par leur index ? 8O
J'aimerais vraiment pas maintenir ton application :?
Vu que la requête est générée automatiquement, je vois pas trop comment on peut faire pour la modifier... le mieux, ce serait sans doute qu'au lieu de faire "SELECT *", tu fasses "SELECT champ1, champ2, champ3...", et dans ce cas tu mets le champ "Long" entre crochets. En plus comme ça tu peux ignorer les champs qui te servent pas (ça m'étonnerait que tu aies vraiment besoin des 109 champs...).
L'autre option, ce serait de renommer le champ "Long" en quelque chose de plus parlant...
merci,
j'essaye ça et je te donne mon compte rendu.
Ne serait il pas possible d'utiliser une procédure stockée?
Non seulement le code est illisible avec toutes les colones mais en plus la boucle de requêtes c'est encore moins le top :(
(On passera sur le fait qu'une table de 108 colonnes a de grandes chances d'être mal modélisée)
j'ai pas d'autre choix pour le nombre assez élevé des champs mais le programme dont j'utilise a cette structure et je ne peux pas le modifier.
en mettant: "SELECT champ1, champ2, champ3..." un message d'erreur indique:est ce que je dois mettre tous mes champs entre crochets et si oui dois je séparé les champs par des espaces?Citation:
aucune valeur donnée pour un ou plusieurs des paramètres requis
merci