Errore punteggiatura in comando UPDATE

di fabionik2004 il
11 risposte

Ciao a tutti,

sto usando questo comando per unire 2 campi stringa di una tabella in un campo unico.

Si tratta di un comando che avevo gia usato in passato, ma ora penso di avere un problema col nome dei campi che inizano con un numero e non riesco a capire che punteggiatura usare in modo che la stringa venga eseguita correttamente

Mi da errore runtime ‘3075’ Errore di sintassi

stringcopy = "UPDATE Tabella1 SET Tabella1.1iban1 = Tabella1.1Iban1 & Tabella1.1Iban2 Where (Len(Tabella1.1Iban1)>0) "
DBEngine(0)(0).Execute stringcopy, dbFailOnError

avete un'idea?

Grazie

11 Risposte

  • L'unione dei 2 campi, (per tutti i record della tabella)

    esempio 1iban1= 1234   1iban2=5678

    Risultato 1iban1=1iban1 & 1Iban2 = 12345678

  • Il carattere & non lo puoi mettere all'interno di una frase SQL

  • Oltre alla & non puoi neanche inserire la funzione Len nel predicato SQL.

  • 03/11/2023 - Antony73 ha scritto:


    Oltre alla & non puoi neanche inserire la funzione Len nella frase SQL.

    Ok per questo posso trovare un'alternativa, il fatto é che ho provato anche semplicemente con  questo e mi da gia errore, quindi sto cercando di trovare una soluzione a questo

    "UPDATE Tabella1 SET Tabella1.1iban1 = Tabella1.1iban1"
  • Ho trovato una soluzione

    ho creato una query di aggiornamento 

    UPDATE Tabella1 SET 1iban1 = [1Iban1] & [1iban2]
    WHERE Len ([1iban1]) > 0 and Len ([1Iban1])<5;
    

    Che vado ad aprire da codice vba

    DoCmd.OpenQuery "qiban", acViewhidden, acEdit
    
  • 03/11/2023 - Antony73 ha scritto:


    Oltre alla & non puoi neanche inserire la funzione Len nel predicato SQL.

    Sicuro…?

    Si può tranquillamente.

  • Come ti ha suggerito OREGON…. Non si concatena con & ma con il + tuttavia devi essere certo che almeno 1 delle 2 sia Valorizzata o Testo Nullo ovvero NULLSTRING.

    Aggiungerei quindi il casting al contenuto di Iban1 al Formato testo perchè il len restituisce errore se il contenuto del campo è NULL e non NULLSTRING…. e dovresti sapere che sono 2 cose diverse…

    stringcopy = "UPDATE Tabella1 SET 1iban1 = (1Iban1 + 1Iban2) Where (Len(1Iban1+'')>0) "
    DBEngine(0)(0).Execute stringcopy, dbFailOnError

    Saluti

  • Si può concatenare anche con &.

    stringcopy = "UPDATE Tabella1 SET 1iban1 = Impresa1 & ([Impresa2] & '') WHERE Len([Impresa1] & '')>0"
    DBEngine(0)(0).Execute stringcopy, dbFailOnError

    anche se in questo caso specifico quello che si vuol fare mi sembra aver poco senso.

  • H provato entrambi i metodi sia con + che con & in entrambi i casi mi da errore runtime 3075 operatore mancante.

    Per il momento comunque ho risolto salvando una query di aggiornamento e richiamandola da vba.

    Grazie

  • In effetti nel mio caso c'erano alcuni errori, avendola testata su un'altra tabella di prova, ora corretti

    stringcopy = "UPDATE Tabella1 SET 1iban1 = ([1iban1] & ([1iban2] & '')) WHERE Len([1iban1] & '')>0"
    DBEngine(0)(0).Execute stringcopy, dbFailOnError
Devi accedere o registrarti per scrivere nel forum
11 risposte