Verifica esistenza campo in una tabella (vba)

di il
25 risposte

25 Risposte - Pagina 2

  • Re: Verifica esistenza campo in una tabella (vba)

    Forse non mi sono spiegato.

    Una cosa è modificare da codice dinamicamente la struttura di una tabella in un DB in produzione e correntemente in uso, altro scenario è fare queste operazioni con script offline per intervenute nuove esigenze. La nuova struttura viene testata e sostituita alla prima dopo trasferimento dati (secondo un processo di change ben stabilito)

    La versione del DB non si controlla testando l'esistenza di un campo ma ottenendo l'informazione di versione/revisione da un apposito campo di una tabella prevista per questo.

    L'esempio con Oracle era per evidenziare che tutto ciò vale per Oracle come per Access, ovvero non dipende dal tipo di Dbms nè dal fatto che sto gestendo milioni di record con centinaia di utenti (esempio del mio lavoro) o pochi dati con un utente (esempio del thread dell'OP)

    P.S. se vuoi discutere di programmazione/IT e correlati ben venga ma sarebbe meglio farlo in modo meno sarcastico e aggressivo. È utile a tutti un confronto positivo,

  • Re: Verifica esistenza campo in una tabella (vba)

    Avete tutti ragione.

    Eliminare una tabella o un campo è sempre molto pericoloso.

    Tutto dipende da cosa sta programmando (e non è chiaro).

    Se programma un gestore grafico di database, allora può creare, eliminare modificare quello che vuole (tipo phpmyadmin)

    Supponiamo che stia creando surrogatoaccess db. Quello che è mariadb nei confronti di mysql.

    Non puoi creare un gestore database se non puoi permettere all'utilizzatore di creare database, tabelle, campi, relazioni ecc…

    Sicuramente non sarà il fine della richiesta, soprattutto se scrive un 3d dove chiede come si fa, ma essendo stato avvisato di trovare vie alternative, gli è stato indicato come risolvere il quesito posto.

    Questi codici dovrebbero avere il bugiardino con scritto “usare con cautela” e “tenere fuori dalla portata dei bambini”.

    Quanto ad un programma già strutturato, se modifico qualcosa, il programma diventa 2.0 e non ha nulla a che fare col vecchio programma, ma sono procedure che si usano una volta sola facendo l'upgrade e usando preferibilmente istruzioni sql.

    Anche una sql permette di manipolare le tabelle senza passare da codice vb (in questo caso).

    Utilizzare questa procedura per un banale import non ha molto senso, comporterebbe l'inserimento in una tabella di sistema, del nome tabella, nome e natura dei campi e tante altre complicanze.

    Esistono altre strade meno invasive e macchinose.

  • Re: Verifica esistenza campo in una tabella (vba)

    È evidente che se scrivinun tool di gestione del db devi poterlo fare dato che quello è il suo compito.

    Qui si parla di gestionali generici non di tool.

  • Re: Verifica esistenza campo in una tabella (vba)

    02/09/2023 - oregon ha scritto:


    Forse non mi sono spiegato.

    Una cosa è modificare da codice dinamicamente la struttura di una tabella in un DB in produzione e correntemente in uso, altro scenario è fare queste operazioni con script offline per intervenute nuove esigenze. La nuova struttura viene testata e sostituita alla prima dopo trasferimento dati (secondo un processo di change ben stabilito)

    La versione del DB non si controlla testando l'esistenza di un campo ma ottenendo l'informazione di versione/revisione da un apposito campo di una tabella prevista per questo.

    L'esempio con Oracle era per evidenziare che tutto ciò vale per Oracle come per Access, ovvero non dipende dal tipo di Dbms nè dal fatto che sto gestendo milioni di record con centinaia di utenti (esempio del mio lavoro) o pochi dati con un utente (esempio del thread dell'OP)

    P.S. se vuoi discutere di programmazione/IT e correlati ben venga ma sarebbe meglio farlo in modo meno sarcastico e aggressivo. È utile a tutti un confronto positivo,

    Continui ad insistere su cose che non hanno niente a che vedere con la richiesta iniziale, che ti ricordo era “come si fa a controllare se un certo campo esiste dentro una certa tabella”, risposta arrivata da Alex al nono post

    Detto questo, se tu adotti la strategia del “..adesso tutti fuori, aggiorno struttura db, la testo accuratamente, ci trasferisco i dati necessari, alla fine consento a tutti di ricollegarsi..” non vuol dire che un cambio struttura db alternativo non si possa eseguire, una roba del tipo “..comunico ai client avvio procedura cambiamento struttura db, lancio procedura aggiornamento db, comunico ai client ‘struttura db cambiato’ ed autonomamente eseguiranno le operazioni necessarie..” 

    La versione DB ognuno la controlla un po' come crede, che tu la esegua in un certo modo non significa che altri modi siano meno validi

    “..ovvero non dipende dal tipo di Dbms..” esattamente, e quindi far riferimento ad un db specifico ha importanza nulla

    Veramente non era mio intento discutere di programmazione/IT e correlati, ma semplicemente aggiungere informazioni alla richiesta iniziale, se c'e' chi si stupisce che si desideri aggiornare la struttura db, oppure c'e' chi scrive che addirittura sia sbagliato, allora vorrei cercare di capire il fondamento di questi post per dare un'idea piu' ampia possibile a chi ha posto la richiesta iniziale

    Non mi sembra di essere stato sarcastico o aggressivo, se tu o qualche altro utente pensa lo sia stato, me ne scuso gia' fin d'ora, ditemi esattamente dove/in che post e provvedero' a modificarlo

  • Re: Verifica esistenza campo in una tabella (vba)

    02/09/2023 - oregon ha scritto:


    È evidente che se scrivinun tool di gestione del db devi poterlo fare dato che quello è il suo compito.

    Qui si parla di gestionali generici non di tool.

    Infatti non ti ho dato torto.

    Magari sta facendo didattica, importante che sappia i rischi che corre.

    Sicuramente apprenderà il significato dei vari messaggi di errore.

    Access è una buona rampa di lancio per imparare la programmazione, per poi eliminarlo e passare a qualcosa di più serio, dove per le relazioni non hai il gestore grafico ma devi lavorare di testa.

  • Re: Verifica esistenza campo in una tabella (vba)

    L'indicazione di come leggere il nome del campo l'ho data, addirittura Alex anche il codice pronto.

    Quindi parlare del resto, ovvero di come normalmente si opera in questi casi può servire a tutti e questo ti è già stato detto in altre occasioni, inutile ripeterlo.

    Un codice che aggiorna la struttura del db, sua uno script o un altro eseguibile lanciato presso l'utente ma sempre offline (almeno nel caso di multiutentenza e non nel caso banale del piccolo db access monouso) non cambia le cose.

    Quello che avevo da dirti riguardo la tua domanda, l'ho detto.

    Buona giornata 

  • Re: Verifica esistenza campo in una tabella (vba)

    02/09/2023 - sihsandrea ha scritto:


    Avete tutti ragione.

    Eliminare una tabella o un campo è sempre molto pericoloso.

    Tutto dipende da cosa sta programmando (e non è chiaro).

    Se programma un gestore grafico di database, allora può creare, eliminare modificare quello che vuole (tipo phpmyadmin)

    Supponiamo che stia creando surrogatoaccess db. Quello che è mariadb nei confronti di mysql.

    Non puoi creare un gestore database se non puoi permettere all'utilizzatore di creare database, tabelle, campi, relazioni ecc…

    Sicuramente non sarà il fine della richiesta, soprattutto se scrive un 3d dove chiede come si fa, ma essendo stato avvisato di trovare vie alternative, gli è stato indicato come risolvere il quesito posto.

    Questi codici dovrebbero avere il bugiardino con scritto “usare con cautela” e “tenere fuori dalla portata dei bambini”.

    Quanto ad un programma già strutturato, se modifico qualcosa, il programma diventa 2.0 e non ha nulla a che fare col vecchio programma, ma sono procedure che si usano una volta sola facendo l'upgrade e usando preferibilmente istruzioni sql.

    Anche una sql permette di manipolare le tabelle senza passare da codice vb (in questo caso).

    Utilizzare questa procedura per un banale import non ha molto senso, comporterebbe l'inserimento in una tabella di sistema, del nome tabella, nome e natura dei campi e tante altre complicanze.

    Esistono altre strade meno invasive e macchinose.

    Stai supponendo e dando per scontate un sacco di cose, meglio chiedere al richiedente cosa sta programmando, dovrebbe essere a suo favore questo 3d

    “..Quanto ad un programma già strutturato, se modifico qualcosa, diventa 2.0 e non ha nulla a che fare col vecchio..”  

    Ipotizza di aggiungere due campi alla tabella SPECIEITTICHE, dici che il tuo gestionale VENDITASOGLIOLE 3.0 diventa 4.0 ?

    A casa mia no, resta il gestionale di prima dove nel db vengono aggiunti due campi e nella form SpecieIttiche vengono aggiunte le strutture per consentire di vedere/modificare le nuove informazioni, ma ammetto che questa e' una scelta soggettiva, alcuni potrebbero rilasciare una nuova versione della procedura anche con minime modifiche

    L'esempio sopra e' stato scritto solamente allo scopo di evidenziare dei casi dove non ci sono grossi cambiamenti da prima a dopo, e quindi non si parla di ‘versioni’ diverse del gestionale (se non per una minor version diversa giusto per distinguere la versione nuova di programma), ma richiede comunque la modifica della struttura db sul quale la procedura si appoggia

  • Re: Verifica esistenza campo in una tabella (vba)

    02/09/2023 - sihsandrea ha scritto:


    Infatti non ti ho dato torto.

    Magari sta facendo didattica, importante che sappia i rischi che corre.

    Sicuramente apprenderà il significato dei vari messaggi di errore.

    Access è una buona rampa di lancio per imparare la programmazione, per poi eliminarlo e passare a qualcosa di più serio, dove per le relazioni non hai il gestore grafico ma devi lavorare di testa.

    In che senso Access sarebbe un sistema "poco serio"  ?

    “..dove per le relazioni non hai il gestore grafico ma devi lavorare di testa…”  non vedo che miglioria ci sia nell'assenza di un tool grafico per impostare le relazioni tra una tabella e le altre, puoi fare un esempio?

  • Re: Verifica esistenza campo in una tabella (vba)

    02/09/2023 - amorosik ha scritto:


    A casa mia no, resta il gestionale di prima dove nel db vengono aggiunti due campi e nella form SpecieIttiche vengono aggiunte le strutture per consentire di vedere/modificare le nuove informazioni, ma ammetto che questa e' una scelta soggettiva, alcuni potrebbero rilasciare una nuova versione della procedura anche con minime modifiche

    A parte che “avete tutti ragione” includeva anche te.

    Si, aggiungi 3 campi specificando se siano testo, data o numerico. 

    Avrai una sql che cerca per quel campo che non sai come hai chiamato (non sa neanche se esiste già), avrai già in maschera il campo dove valorizzare quel campo che non sai se è testo, data o numerico.

    In access probabilmente lanci il wizad e ti ritrovi il form con tanto di stampa e campo di ricerca, in altri linguaggi no.

    È buona abitudine il controllo di versione (cosa che un freelance non fa), in modo da sapere se l'utente con licenza A ha la 1.0 e quindi senza gestire la tabella pippo, e chi ha la 2.0 che invece gestisce la tabella pippo.

    Anche passando da una release all'altra di access, magari perché prima non gestiva qualcosa e adesso si, ti indica (il produttore) quale versione hai installata.

    Per questo ho parlato di complicazioni da poter essere in grado di gestire. 

    In ultimo, ribadisco che non ti ho dato dei torti.

  • Re: Verifica esistenza campo in una tabella (vba)

    Access è un client evoluto rispetto alla gestione del db che usa il motore Jet.

    Jet è limitato come conseguenza dell'utilizzo diretto dei file Db, che influiscono sulla sicurezza e sull'efficienza. Non è importante certamente l'interfaccia relativa alle relazioni .

    Per questi motivi viene definito poco serio, naturalmente sbagliando. È solo inadeguato oltre certi utilizzi per cui è stato pensato  

    Ma stiamo ovviamente andando molto OT

  • Re: Verifica esistenza campo in una tabella (vba)

    Access con dati su file formato Access neanche lo considero, il minimo dei minimi e' procedura Access+dbserver, pure per le monoutenze

    Sto cercando di capire se una procedura Access, collegata a dati di un qualsiasi db server, si possa definire un sistema ‘poco serio’

    A mio parere, se restiamo nel campo dei classici gestionali desktop per Windows, e' uno strumento ottimo, sia tecnicamente per le operazioni che si possono realizzare, sia per il fatto di essere integrato perfettamente con la suite office che volente o nolente e' presente nella maggior parte degli ambiti professionali, sia per l'immensa comunita' di utenti ed esperti che si trovano in rete e che spesso condividono generosamente il loro sapere

    Ogni tanto si vedono ancora questi messaggi, come se uno sviluppatore Access fosse figlio di un dio minore, come se davvero esistessero sistemi alternativi in grado di realizzare con lo stesso impegno di risorse un prodotto finale piu' efficace

    Se conoscete ambienti di sviluppo, simil Access, parlo di roba tipo Power Builder, Omnis, Cognos, DataFlex, FileMaker, sono curioso di avere vostre esperienze

Devi accedere o registrarti per scrivere nel forum
25 risposte