PDA

View Full Version : [Access] Problema con INSERT INTO


Lim
13-09-2008, 08:19
Sto sviluppando un semplice script PHP per un mio amico.
Questo script deve interagire con un DB in Access 2007 e dopo aver letto dei dati da un file testuale, li deve caricare in apposite tabelle.

Il problema è che i nomi di alcune colonne hanno gli spazi (un esempio è "NOME IMPIANTO").
Mi ritorna sempre un errore quando cerco di caricare dati in questo tipo di colonne (a dir la verità succede anche con altre colonne che hanno gli _ al posto degli spazi...)

Ho cercato a lungo in rete qualche soluzione, ma senza risultati.


Ecco il messaggio di errore:

Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Microsoft OLE DB Provider for ODBC Drivers<br/><b>Description:</b> [Microsoft][Driver ODBC Microsoft Access] Errore di sintassi nell'istruzione INSERT INTO.' in F:\AppServ\www\jek\parser2.php:426 Stack trace: #0 F:\AppServ\www\jek\parser2.php(426): com->execute('INSERT INTO imp...') #1 F:\AppServ\www\jek\parser2.php(494): parser('001.xml') #2 {main} thrown in F:\AppServ\www\jek\parser2.php on line 426


Ho provato a risolvere omettendo la lista dei nomi dei campi da inserire, usando un comando di questo tipo:

INSERT INTO impianti VALUES('dato1','dato2','dato3')

In questo modo funziona, solo che non incrementa automaticamente il campo chiave e devo farlo io a mano inserendo nella lista dei VALORI il giusto numero incrementato. Preferirei che lo facesse automaticamente...
Inoltre restituisce un diverso messaggio di errore (ma l'inserimento lo fa lo stesso...)

Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> ADODB.Recordset<br/><b>Description:</b> L'operazione non � consentita se l'oggetto � chiuso.' in F:\AppServ\www\jek\parser2.php:431 Stack trace: #0 F:\AppServ\www\jek\parser2.php(431): parser() #1 F:\AppServ\www\jek\parser2.php(494): parser('001.xml') #2 {main} thrown in F:\AppServ\www\jek\parser2.php on line 431


Da cosa può dipendere? qualcuno ha idee?:muro: :help:

cdimauro
13-09-2008, 08:26
Racchiudi i nomi dei campi "rognosi" fra doppie virgolette.

Lim
13-09-2008, 20:10
Racchiudi i nomi dei campi "rognosi" fra doppie virgolette.

Avevo provato anche in quel modo, ma non funziona...:muro:

Kralizek
13-09-2008, 20:17
se non erro i nomi di colonne contenenti spazi vanno racchiusi tra parentesi quadre.

comunque il modo più semplice è creare una query di select con il designer e fare la proiezione di uno o due campi in modo tale che il designer non può usare l'operatore *

Lim
16-09-2008, 16:54
Ho risolto usando le parentesi quadre!!! :D

Grazie mille!!!