Errore spazi nel nome delle tabelle

di Anonimizzato23890 il
8 risposte
Buongiorno a tutti,

ho riadattato un codice vba che ho trovato nel sito, e credo di aver fatto un discreto lavoro.
In sostanza ho due tabelle la prima importa i dati da un file txt la seconda tabella, dopo aver controllato eventuali errori tramite una maschera, ci sono i dati sistemati.

per portare i dati dalla tabella A alla Tabella B ho creato una query di accodamento. nella maschera ho creato un pulsante per far eseguire l' accodamento dei dati.
Ora per evitare che vengano ricaricati due volte gli stessi dati ho creato un codice:
 Dim Paghe            As DAO.database
Dim Listino_IRF CALTANISSETTA] As DAO.Recordset
Dim [TABELLA PRESENZE IRF CALTANISSETTA] As DAO.Recordset

Set database = CurrentDb
Set [Listino IRF CALTANISSETTA] = db.OpenRecordset("Tab1", dbOpenDynaset)
[Listino IRF CALTANISSETTA].MoveFirst
Do Until [Listino IRF CALTANISSETTA].EOF
Set [TABELLA PRESENZE IRF CALTANISSETTA] = db.OpenRecordset("SELECT * FROM Tab2 WHERE Mese=" & [Listino IRF CALTANISSETTA].Fields("Mese").Value, dbOpenDynaset)
If [TABELLA PRESENZE IRF CALTANISSETTA].Fields("Mese").Value<>[Listino IRF CALTANISSETTA]T1.Fields("Mese").Value Then
DoCmd.OpenQuery "query accodamento IRF Caltanissetta", , acReadOnly
Else
MsgBox ("Listino già Caricato"), vbInformation, "INFORMAZIONE"
End if
[TABELLA PRESENZE IRF CALTANISSETTA].Close
Set [TABELLA PRESENZE IRF CALTANISSETTA]=Nothing
[Listino IRF CALTANISSETTA].MoveNext
Loop

[Listino IRF CALTANISSETTA].Close
database.Close
Set [Listino IRF CALTANISSETTA]=Nothing
Set Paghe=Nothing
 
dove sto dicendo se il mese della prima tabella è diverso dalla seconda tabella allora aggiorna altrimenti scrivi "Listino già caricato".
uno dei problemi, come avrete capito è ce le tabelle hanno nomi con gli spazi e non ho capito come scriverli ho messo le parentesi quadre ma mi da errore.

prima avevo provato con un codice più semplice:
If [Listino IRF CALTANISSETTA].Fields("Mese").Value <> [TABELLA PRESENZE IRF CALTANISSETTA].Fields("Mese").Value Then
DoCmd.OpenQuery "query accodamento IRF Caltanissetta", , acReadOnly
Else
MsgBox ("Listino già Caricato"), vbInformation, "INFORMAZIONE"
End If
ma dice che non trova il campo immagino perche prima non ho aperto le tabelle

grazie

8 Risposte

  • Nel codice VBA non devi usare spazi per gli identificatori. Il nome dell'identificatore non deve essere uguale ai nomi delle tabelle.

    Del resto, i nomi delle tabelle che usi nelle frasi SQL sono Tab1 e Tab2, quindi stai facendo una grande confusione.
  • Ok devo studiare di più per il primo codice!! ma senti il secondo codice non funziona perchè non apro le tabelle o perchè ho usato gli spazi negli indentificatori? se è la seconda una tabella che si chiama Listino IRF come lo scrivo su VBA? Listino_IRF?
  • Io volevo scrivere un semplice codice:
    SE il campo "Mese" della tabella "Listino IRF" è DIVERSO dal campo "Mese" della Tabella "Tabella presenze" ALLORA avvia la query di accodamento ALTRIMENTI scrivi un messaggio
  • Non posso rispondere alla tua domanda perché dovrei riscrivere tutto il codice per te. Tu non sei ancora in grado di scrivere codice VBA perché non ne conosci le basi. Non è questione di studiare di più ma di cominciare a studiare.
  • eternityck ha scritto:


    Io volevo scrivere un semplice codice:
    SE il campo "Mese" della tabella "Listino IRF" è DIVERSO dal campo "Mese" della Tabella "Tabella presenze" ALLORA avvia la query di accodamento ALTRIMENTI scrivi un messaggio
    Avevi anche letto la risposta data ad OSVALDO sull'utilizzo di caratteri speciali... evidentemente non hai minimamente capito.... e questa è ampia dimostrazione che chi non ha basi deve anche far attenzione alle sciocchezze che propone a chi legge...

    Osvaldo ora suggerisci tu il codice gusto....
  • Dim Listino_IRF CALTANISSETTA] As DAO.Recordset
    Dim [TABELLA PRESENZE IRF CALTANISSETTA] As DAO.Recordset
    Nel primo rigo avresti messo una parentesi quadra solo a destra.
    In ogni caso, ho provato a fare anche un piccolo test con nome variabile con spazi e parentesi quadre (perché non lo sapevo nemmeno io), i nomi delle variabili NON DEVONO CONTENERE SPAZI, NON DEVONO CONTENERE PARENTESI QUADRE (nemmeno senza spazi). Se provi a scriverli in quel modo, Access ti dà un messaggio di errore da subito e non consente di compilare il codice successivamente. Puoi immaginare i problemi a catena che ne insorgono.
  • Ma Osvaldo cosa provi? Non hai mai letto le prime pagine di un libro sul VBA? Il capitolo sul nome degli identificatori dovrebbe essere uno dei primi...
Devi accedere o registrarti per scrivere nel forum
8 risposte