Problema Tabella

di il
42 risposte

42 Risposte - Pagina 3

  • Re: Problema Tabella

    Ciao Franco sto facendo i test ma quello che non capisco è: (grazie per la spiegazione di &_)

    Se questa select funziona 

    Come fa in Debug a non aver esplicitato la concatenazione di tblInput? Come mai non vedo "DEN90DAT_MGART09F" e la select funziona? E perchè mettendo il punto di controllo non sale a leggere le variabili a inizio script ed in realtà e tutto ok?

    oppure giustamente il debug mi sta debbaggando chiaramente quello che gli ho dato in pasto (ma mi aspetterei al limite)

    SELECT CDDTM9, CDLGM9, CDARM9, NRRGM9, DSARM9 FROM  tblinput ORDER BY CDDTM9, CDLGM9, CDARM9, NRRGM9;
  • Re: Problema Tabella

    Ciao Fabio,

    apri il post in modifica e incolla nuovamente le immagine perchè non si vedono... purtroppo accade questo problemino  

    (penso di aver capito , ma meglio vedere i tuoi screenshot)

  • Re: Problema Tabella

    23/05/2025 - Fabio76 ha scritto:

    Se questa select funziona 

    Immaginavo... 

    • Metti il punto di interruzione per il debug
    • Avvia l'applicazione
    • Quando arriva al punto di interruzione, l'applicazione si ferma :
      • vai in finestra immediata e interroga la stringa
        • metti il punto Interrogativo e a seguire la stringa e premi INVIO
          • se hai già in finestra immediata tale interrogazione , allora ti posizioni alla fine della stringa e premi INVIO
    • Per ripartire puoi premere F5  oppure puoi premere F8 per avanzare riga per riga
      • oppure puoi interrompere il Debug e l'applicazione si ferma
  • Re: Problema Tabella

    Perfetto, ora che ha caricato tutto lo script

    ? "SELECT CDDTM9, CDLGM9, CDARM9, NRRGM9, DSARM9 FROM " & tblInput & _
                                      " ORDER BY CDDTM9, CDLGM9, CDARM9, NRRGM9;"
    SELECT CDDTM9, CDLGM9, CDARM9, NRRGM9, DSARM9 FROM DEN90DAT_MGART09F ORDER BY CDDTM9, CDLGM9, CDARM9, NRRGM9;

    Adesso posso provare a concatenare e mettere in join

  • Re: Problema Tabella

    26/05/2025 - Fabio76 ha scritto:

    Perfetto, ora che ha caricato tutto lo script

    ? "SELECT CDDTM9, CDLGM9, CDARM9, NRRGM9, DSARM9 FROM " & tblInput & _
                                      " ORDER BY CDDTM9, CDLGM9, CDARM9, NRRGM9;"
    SELECT CDDTM9, CDLGM9, CDARM9, NRRGM9, DSARM9 FROM DEN90DAT_MGART09F ORDER BY CDDTM9, CDLGM9, CDARM9, NRRGM9;

    Adesso posso provare a concatenare e mettere in join

    Ciao,

    aiutati con una query in designer e quando vedi che ottieni il risultato voluto , allora la scrivi nel codice VBA.

    Esempio:

    Crea una query

    Esegui la Query e vedi se ti soddisfa

    Se tutto Ok allora apri la visualizzazione Sql

    • E con questa stringa Sql scrivi o verifichi la query in VBA
      • attanzione alla sintassi che cambia tra struttura query e codice
      • puoi toglegliere il nome della tabella accanto alla colonna se non serve, esempio :
        • SELECT DEN90DAT_MGART09F.CDDTM9, DEN90DAT_MGART09F.CDLGM9,   ....
        • diventa:
        • SELECT CDDTM9, CDLGM9, ....
      • puoi togliere le parentesi che non occorrono:
        • WHERE (((DEN90DAT_MGART00F.tpstma)=1))
        • diventa:
        • WHERE tpstma=1
    • Etc etc etc ...
  • Re: Problema Tabella

    Pensavo più veloce ma già meglio (ottengo 16000 record contro i 25000 di quella senza join con anagrafica articoli)

     ' Open recordset from input table and read
       With DBEngine(0)(0).OpenRecordset("SELECT A.CDDTM9, A.CDLGM9, A.CDARM9, A.NRRGM9, A.DSARM9 " & _
            "FROM [" & tblInput & "] AS A " & _
            "INNER JOIN [" & tblAnagrafica & "] AS B ON A.CDARM9 = B.CDARMA " & _
            "WHERE B.TPSTMA = '1' AND A.CDLGM9 IS NOT NULL AND A.CDLGM9 <> '' AND A.CDLGM9 <> 'IT' " & _
            "ORDER BY A.CDDTM9, A.CDLGM9, A.CDARM9, A.NRRGM9;", dbOpenSnapshot)
           Do While Not .EOF
  • Re: Problema Tabella

    Ciao Fabio,

    mi sembra che sei arrivato ad un buon punto e che ci stai prendendo mano. Bene !

    Alcune osservazioni:

    • rinomini le tabelle con A e B perchè hai campi (colonne) con lo stesso nome in entrambe letabelle ?
      • se sei sicuro che i nomi dei campi sono diversi, allora non hai bisogno di rinominare le tabelle
    • le parentesi quadre : si usano solo se i nomi delle tabelle hanno delle spaziature, dei caratteri speciali, etc...
      • è bene usarle,ma sarebbe meglio codificare i nomi delle tabelle e delle colonne (campi) senza caratteri speciali e senza le spaziature.
        comunque metterle male non fa. ;-) 

    :
    Insomma, sei quasi arrivato alla fine ... ora il lavoro più faticoso e importante è quello di effettuare tutti i test possibili per validare  correttamente tutto il processo.

    Bravo !

  • Re: Problema Tabella

    No Franco, l'ho messa così perchè in questo modo:

    "SELECT CDDTM9, CDLGM9, CDARM9, NRRGM9, DSARM9 " & _
            "FROM " & tblInput & " " & _
            "INNER JOIN " & tblAnagrafica & " ON CDARM9 = CDARMA " & _
            "WHERE TPSTMA = '1' AND CDLGM9 IS NOT NULL AND CDLGM9 <> '' AND CDLGM9 <> 'IT' " & _
            "ORDER BY CDDTM9, CDLGM9, CDARM9, NRRGM9;"

    e con questo debug:

    ? "SELECT CDDTM9, CDLGM9, CDARM9, NRRGM9, DSARM9 " & _
            "FROM " & tblInput & " " & _
            "INNER JOIN " & tblAnagrafica & " ON CDARM9 = CDARMA " & _
            "WHERE TPSTMA = '1' AND CDLGM9 IS NOT NULL AND CDLGM9 <> '' AND CDLGM9 <> 'IT' " & _
            "ORDER BY CDDTM9, CDLGM9, CDARM9, NRRGM9;"
    SELECT CDDTM9, CDLGM9, CDARM9, NRRGM9, DSARM9 FROM DEN90DAT_MGART09F INNER JOIN DEN90DAT_MGART00F ON CDARM9 = CDARMA WHERE TPSTMA = '1' AND CDLGM9 IS NOT NULL AND CDLGM9 <> '' AND CDLGM9 <> 'IT' ORDER BY CDDTM9, CDLGM9, CDARM9, NRRGM9;

    Mi da errore di sintassi.

    Di solito le [] mi sono abituato ad usarle perchè una volta ci sono diventato pazzo, per una cazzata su un copia incolla.....

    Ora devo capire cosa mi conviene fare: se automatizzare all'apertura della maschera il delete e lancio della funzione per creare la tabella o se creare un tasto che lancia l'operatore quando vede che non ci sono le descrizioni in lingua sui nuovi codici.

  • Re: Problema Tabella

    28/05/2025 - Fabio76 ha scritto:

    Mi da errore di sintassi.

    Ciao,

    da quello che vedo possono esistere solo errori di sintassi dovuti daambiguità.

    Un esempio :  se TPSTMA è presente in entarambe le tabelle, questo restituisce errore di sintassi.

    In questo caso usando l'alias A e B il problema di sintassi è risolto.

    Mentre nello specifico le parentesi quadre [nome della tabella]  per come sono i nomi delle tabelle, non sono strettamente necessarie. 
    Hai usato nomi privi di spazi, di caratteri speciali e non corrispondono a nomi riservati per MsAccess.
    Ma se le usi va benissimo e può essere una buona abitudine.

    28/05/2025 - Fabio76 ha scritto:

    Ora devo capire cosa mi conviene fare: se automatizzare all'apertura della maschera il delete e lancio della funzione per creare la tabella o se creare un tasto che lancia l'operatore quando vede che non ci sono le descrizioni in lingua sui nuovi codici.

    Potresti:

    • in apertura maschera, controllare se per i nuovi codici ci sono oppure no le descrizioni in lingua.
      • se NON ci sono le descrizioni :
        • avvisare l'utente indicando di premere un button
          • oppure
        • avviare in automatico emettendo un messaggio di avviso e/o di conferma prima di eseguire l'operazione.
      • se le descrizioni sono tutte presenti
        • non fare nulla
  • Re: Problema Tabella

    28/05/2025 - By65Franco ha scritto:

    28/05/2025 - Fabio76 ha scritto:

    Mi da errore di sintassi.

    Ciao,

    da quello che vedo possono esistere solo errori di sintassi dovuti daambiguità.

    Un esempio :  se TPSTMA è presente in entarambe le tabelle, questo restituisce errore di sintassi.

    Difatti ci sono impazzito, i campi di MGART09F hanno chiaramente tutti nel nome 09, la tabella MGART00F, come tutte quelle del mio ERP dove è 00F non ha mai le estensioni sui campi eppure:

  • Re: Problema Tabella

    28/05/2025 - Fabio76 ha scritto:

    28/05/2025 - By65Franco ha scritto:

    28/05/2025 - Fabio76 ha scritto:

    Mi da errore di sintassi.

    Ciao,

    da quello che vedo possono esistere solo errori di sintassi dovuti daambiguità.

    Un esempio :  se TPSTMA è presente in entarambe le tabelle, questo restituisce errore di sintassi.

    Difatti ci sono impazzito, i campi di MGART09F hanno chiaramente tutti nel nome 09, la tabella MGART00F, come tutte quelle del mio ERP dove è 00F non ha mai le estensioni sui campi eppure:

    Anteponi ad ogni campo utilizzato nella select (nell'orderby, nella where) anche il nome della tabella  ... i.e. TabA.NomeCampo1.

  • Re: Problema Tabella

    28/05/2025 - Fabio76 ha scritto:

    Difatti ci sono impazzito, i campi di MGART09F hanno chiaramente tutti nel nome 09, la tabella MGART00F, come tutte quelle del mio ERP dove è 00F non ha mai le estensioni sui campi eppure:

    Ciao,

    fai una cosa Fabio visto che anche in questo Thread non ci sarà la possibilità di poter correttamente portare a termine la discussione, disponibilissimo a sentirsi in privato così ti passo tutte le indicazioni che ti occorrono in un ambiente più tranquillo, civile e sereno.

    Non si perde tempo... si fa prima e meglio.

    (tanto già sappiamo come andrà a finire)

    Un salutone.

    (purtroppo non dipende da me, non ci posso fare nulla...)

  • Re: Problema Tabella

    29/05/2025 - sihsandrea ha scritto:

    giusto per curiosità ...

    Mi pare che siamo arrivati al punto che la query di Fabio funziona nel QBE ma non in VBA e che quindi sia sensato concentrarsi nel risolvere il problema dell'errore di sintassi ... o mi sbaglio?

    Andrea, quale sarebbe quindi, a questo punto, l'utilità di aggiungere entropia a questa discussione? Rischiando che poi la stessa venga chiusa dal moderatore ?

Devi accedere o registrarti per scrivere nel forum
42 risposte