Newsgroup: it.comp.lang.visual-basic
Titolo: [ADO] Recordset.AddNew con Nome Campi contenenti spazi

Ho una tabella con dei nomi dei campi contenenti degli spazi (es: "Mio
Campo") e se faccio un AddNew mi si genera un errore di sintassi
nell'isatruzione Insert Into. Se procedo con la stringa SQL, invece, posso
aggirare il problema racchiudendo il nome campo tra gli apici.
Premesso che non posso cambiare il nome dei campi e che vorrei mantenere
l'uso dell'AddNew, ho qualche possibilità di risolvere il problema?
Aggiungo il codice:
| Table.AddNew
| For j = LBound(VettoreDati) To UBound(VettoreDati)
| Table.Fields(j) = CellRecord(j)
| Next j
| Table.Update
Ciao e Grazie!!!!
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 | Table.Fields(j) = CellRecord(j)
Ti conviene fare Table.Fields(j).Value = CellRecord(j)
e comunque j da che valore parte? Perchč devi tenere conto dell'indice 
iniziale dei fields. Non ricordo se l'elenco delle colonne parta con 
indice 0 o 1, ma controlla che i valori iniziali e finali di j combacino 
con gli indici della tabella.
E non č detto che l'ordine delle colonne della tua tabella sia sempre lo 
stesso. Se cambi la disposizione delle colonne nel db, il ciclo 
cercherebbe di assegnare i valori del tuo vettore a colonne diverse 
dalla disposizione originale.
Potresti anche fare:
Table.Fields("Tua Tabella").Value = "abcde".
P.S.: Che database usi? Access? Perchč - se non vado errato - con Access 
puoi anche scrivere questa query:
INSERT INTO Tabella([Mia Colonna]) VALUES('abcd').
-- 
Quando noi ignoranti eravamo di piů,
tutto era piů bello...
(Adriano Celentano)

> Table.Fields("Tua Tabella").Value = "abcde".
Ehm intendevo
Table.Fields("Tua Colonna").Value = "abcde"
-- 
Quando noi ignoranti eravamo di più,
tutto era più bello...
(Adriano Celentano)

 Ti conviene fare [cut]
Io avevo capito un problema completamente diverso, ossia che generasse un
errore al momento dell'esecuzione dell'AddNew.
Ciao
Alberto

 INSERT INTO Tabella([Mia Colonna]) VALUES('abcd').
Access o MySQL, no cambia nulla. Naturalmente se creo un comando SQL non ho
problemi, ma dato che le scritture erano parecchie, avevo provato che con
AddNew il programma era un po' più veloce e che Access gonfiava meno il DB,
quindi volevo mantenere questa modalità!


 errore al momento dell'esecuzione dell'AddNew.
Al momento dell'Update!!! Ma il msg di errore parla di sintassi nell'Insert
Into, quindi presuppongo che ADO, facendo un AddNew costruisca da se il
comando SQL!


| Table.Update
Questo es. a me non da alcun errore:
[
    Dim cnn As New ADODB.Connection
 
    cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\Documents and Settings\xxx\Desktop\Test.mdb;Persist Security
Info=False"
    cnn.Open
 
    Dim rs As New ADODB.Recordset
    rs.CursorLocation = adUseClient
    rs.Source = "SELECT * FROM TEST;"
    rs.Open , cnn, adOpenStatic, adLockBatchOptimistic
    rs.AddNew
    rs("ID") = "CIAO"
    rs("CAMPO QUESTO") = "1"
    rs.UpdateBatch
    Set rs = Nothing
 
    cnn.Close
    Set cnn = Nothing
]
Che stringa di connessione stai usando?
Come apri il recordset?
Ciao!


Mi sa che la differenza sta nel fatto che usando
      rs("CAMPO QUESTO") = "1"
le virgolette ti salvano. Facendo
      rs.field(j)= "1"
no...
Mi sto sempre più convincendo che la cosa migliore sia usare l'SQL, o al più
la sintassi che mi hai indicato. L'uso dell'ordinale del campo mi faceva
comodo perchè il codice era più compatto, essendo il vettore e la tabella
costruiti con lo stesso criterio.


 Access o MySQL, no cambia nulla.
Beh te lo chiedevo per indicarti una sintassi SQL adeguata. Ovvio che ce 
vuoi ciclare i fields allora effettivamente non cambia nulla fra Access 
o MySQL.
Ma, ripeto, era per sapere se dovevo suggerirti una sintassi o l'altra 
(prima ti ho indicato una sintassi adatta ad access).

 ha
scritto:

Ti ringrazio comunque!!!


costruiti con lo stesso criterio.
Non cambia nulla.
Ciao!

 Non cambia nulla.
Non dovrebbe.
Ma magari un giorno scopriremo che usando il nome del campo anzichč
l'ordinale, P@olo ha risolto il problema, e si č dimenticato di dircelo,
cosě come inizialmente aveva detto che il problema era sull'AddNew e poi si
scopre che era sull'Update...
Ciao
Alberto

 scopre che era sull'Update...
Chiedo venia per l'equivoco, volevo dire che l'errore nasceva dall'uso del
metodo AddNew/Update in luogo della Execute SQL!
