Problema collegamento Access su SQL

di il
17 risposte

Problema collegamento Access su SQL

Salve, in ambito aziendale ho un server sql, con 4 tabelle in croce, che vengono scritte da as400. Quando provo ad collegarle con access ottengo in tutte e 4 le tabelle, in tutti i campi #Eliminato. Dando un F5, si visualizza la prima riga. Access non da nessun messaggio di errore, ho provato più volte a ricreare la connessione ODBC senza risolvere.

In azienda ho altri software su SQL (non vengono pero scritti da AS400) ma da Pentaho e su quelle tabelle li non ho nessun problema.

Da cosa potrebbe dipendere? Io avrei un dubbio sul campo data, presente in tutte e 4 le tabelle.....

17 Risposte

  • Re: Problema collegamento Access su SQL

    Da cosa potrebbe dipendere? 

    - Versione driver odbc

    - Mancanza campo da usare come indice unico nelle tabelle

  • Re: Problema collegamento Access su SQL

    Sinceramente ho provato con i driver 17 , 18 e SQL server ottenendo sempre lo stesso risultato

    Però se io apro il DB da sql, sulla tabella commesse, il campo recordimportdate con ID23 é scritto così 2025-04-08 09:34:43.283 e poi ha tutti i campi finali dove trovo compilato NULL

    In access, sulla stessa tabella dove vedo tutti i campi con #Errore, dopo un F5, si aggiorna il primo record che è l'ID23 dove lo stesso campo di data e visualizzato così 08/04/2025 09:34:43 e dove i campi NULL sono visualizzati a BLANK (vuoti)

    Non riesco a capire

  • Re: Problema collegamento Access su SQL

    "...se io apro il DB da sql..."

    "...sulla tabella commesse, il campo recordimportdate con ID23..."

    Cosa vuol dire esattamente? 

    Capisco che tu dia per scontato molte cose perche' le stai provando, ma renditi conto o meglio tel dico io che non si capisce niente di quel che stai scrivendo

    Devi descrivere almeno:

    - quello che hai adesso (codice + dati)

    - le operazioni che attualmente fai 

    - cosa ottieni adesso 

    - cosa vorresti ottenere

    E quando scrivo 'descrivere' vuol dire far capire anche chi non ha i tuoi programmi/db sottomano quel che succede

    Fa conto di preparare la richiesta per chatGpt, se capisce lui/esso/ella allora e' possibile che capiamo anche noi

  • Re: Problema collegamento Access su SQL

    23/04/2025 - amorosik ha scritto:

    allora e' possibile che capiamo anche noi

    Infatti...

    23/04/2025 - Fabio76 ha scritto:

    In access, sulla stessa tabella dove vedo tutti i campi con #Errore, dopo un F5, si aggiorna il primo record che è l'ID23 dove lo stesso campo di data e visualizzato così 08/04/2025 09:34:43 e dove i campi NULL sono visualizzati a BLANK (vuoti)

    Non riesco a capire

    Infatti... non si capisce.

    Qual'è la struttura del file che cerchi di leggere ? 
    Contiene colonne di tipo packed decimal date bit float etc...etc... ?
    E i nomi delle colonne come sono, quali sono? 
    Esiste una chiave univoca?

    Insomma,non dobbiamo essere noi a fare domande, noi siamo qui, per quanto possibile, nel dare delle risposte.

    Non voglio ripetere ciò che ha già menzionato amorosik , ma senza informazioni esaustive è assai difficile analizzare il problema che cerchi di sottoporre.  

  • Re: Problema collegamento Access su SQL

    Scusate avete ragione

    Questa la tabella commesse dal server sql

    Questa la tabella collegata in access aperta con doppio clik (tutte le righe sono così)

    Questa la stessa tabella dopo un F5 di aggiornamento in visualizzazione

    Questa sotto la tabella importata e non collegata

    Ora è abbastanza chiaro il problema?

    Servono i campi della tabella commesse?

  • Re: Problema collegamento Access su SQL

    24/04/2025 - Fabio76 ha scritto:

    Ora è abbastanza chiaro il problema?

    Ciao, direi che è molto chiaro. ;-)

    Non ho la possibilità di replicare il problema, ma mi verrebbe da pensare che sia solo un problema di refresh o meglio ancora di sincronizzazione.

    Ti suggerisco di verificare il drive ODBC, versione e impostazioni.

    Potresti far vedere come viene impostata la stringa di connessione ? (senza usr e psw per la riservatezza)

    [edit]

    Un test significativo puoi farlo creando ed eseguendo, su una tabella qualsiasi di SqlServer, una Query PassThrough. 
    Questo consente di non utilizzare il motore di MsAccess ma solo SqlServer. Da qui puoi capire se è un problema di Drive ODBC oppure di MsAccess, etc...

  • Re: Problema collegamento Access su SQL

    La stringa di connessione eccola qui:

    Con driver ODBC 18

    ODBC;DSN=WMS18;Description=WMS18;UID=mioutente;PWD=miapassword;Trusted_Connection=No;DATABASE=FGWmsErp;Network=DBMSSOCN;TrustServerCertificate=Yes;QueryLog_On=Yes;StatsLog_On=Yes;

    Con driver ODBC 17

    ODBC;DSN=WMS17;Description=WMS17;UID=mioutente;PWD=miapassword;Trusted_Connection=No;DATABASE=FGWms;Network=DBMSSOCN;

    Con driver SQL generico

    ODBC;DSN=WMS;Description=WMS;UID=mioutente;PWD=miapassword;DATABASE=FGWmsErp;Network=DBMSSOCN;QueryLog_On=Yes;StatsLog_On=Yes

    Ho provato quindi a creare query PassThrough, scelto quindi il l' ODBC con driver 18 e scritto:

    SELECT TOP (1000) [id]
         ,[recordStatus]
         ,[recordWritingDate]
         ,[recordImportationDate]
         ,[plantId]
         ,[response]
         ,[listType]
         ,[listNumber]
         ,[lineNumber]
         ,[item]
     
     FROM [FGWmsErp].[dbo].[LISTS_RESULT]

    E ottengo una tabella che si visualizza!!!!

  • Re: Problema collegamento Access su SQL

    28/04/2025 - Fabio76 ha scritto:

    La stringa di connessione eccola qui:

    Con driver ODBC 18

    ODBC;DSN=WMS18;Description=WMS18;UID=mioutente;PWD=miapassword;Trusted_Connection=No;DATABASE=FGWmsErp;Network=DBMSSOCN;TrustServerCertificate=Yes;QueryLog_On=Yes;StatsLog_On=Yes;

    Con driver ODBC 17

    ODBC;DSN=WMS17;Description=WMS17;UID=mioutente;PWD=miapassword;Trusted_Connection=No;DATABASE=FGWms;Network=DBMSSOCN;

    Ciao,

    • nelle due stringhe il database è diverso. Quale devi Usare ?
    • che versione di Sql Server hai ?

    .

    28/04/2025 - Fabio76 ha scritto:

    Ho provato quindi a creare query PassThrough, scelto quindi il l' ODBC con driver 18 e scritto:

    SELECT TOP (1000) [id]
         ,[recordStatus]
         ,[recordWritingDate]
         ,[recordImportationDate]
         ,[plantId]
         ,[response]
         ,[listType]
         ,[listNumber]
         ,[lineNumber]
         ,[item]
     
     FROM [FGWmsErp].[dbo].[LISTS_RESULT]

    E ottengo una tabella che si visualizza!!!!

    Ok, 

    1. Con questo semplice test si determina che la stringa di connessione funziona.
      1. Quindi per adesso escludiamo che sia un problema di accesso con il driver a Sql Server
    2. Adesso rimane il problema di MsAccess che non interpreta correttamente una o più Fields della tabella.
      • Fai vedere per cortesia il tipo di dati per ogni colonna per verificare se sono compatibili per MsAccess?
        • Per esempio vai su SqlServer e apri la tabella in visualizzazione struttura e fai uno screenshot in modo da vedere i vari tipi di colonna.

    .
    In riferimentoal punto 2. ; 
    Se collegando la tabella vedi tutti i dati come #Eliminato, vuol dire che una o più colonne della tabella non sono compatibili con MsAccess 
    e quindi non riesce a risolverli.
    Mentre se importi la Tabella in MsAccess e non riscontri tale problema, vuol dire che i dati vengono importati così come sono senza guardare le proprietà 
    delle varie colonne.
    In pratica MsAccess crea le varie colonne utilizzando il tipo di dati che conosce e non con quelli impostati in Sql Server.

  • Re: Problema collegamento Access su SQL

    Scusa quello corretto è FGWmsErp avevo fatto dei test anche sull'altro per vedere se cambiava qualcosa senza ottenere nessuna differenza.

    Versione

    Tabella lists_result (con le altre non cambia il risultato)

    Mi sembra non ci sia nulla di strano

  • Re: Problema collegamento Access su SQL

    29/04/2025 - Fabio76 ha scritto:

    Tabella lists_result (con le altre non cambia il risultato)

    Ok, 

    1. Per la versione SqlServer 2019 va bene utilizzare la connessione driver ODBC 18
    2. Per quanto riguarda la chiave primaria id di tipo bigint, MsAccess non la riconosce come tipo e può creare il problema degli #Eliminato
    3. Le colonne di tipo DateTime non dovrebbero creare il problema
    4. Le colonne di tipo nvarchar(1000) potrebbe creare problema (da verificare se ti crea una colonna memo 'LongText' in MsAccess)
    5. Per le altre colonne il mapping con MsAccess non creano problemi

    .
    Non mi sembra di dover evidenziare altri possibili incompatibilità con il mapping di MsAccess
    Penso che l'id di tipo bigint crei proprio lui il problema... e come prima cosa mi concentrei su di esso.

  • Re: Problema collegamento Access su SQL


    Penso che l'id di tipo bigint crei proprio lui il problema... e come prima cosa mi concentrei su di esso.

    Ragionevolmente è il (o un) colpevole.

    Se vuoi gestire da Access anche gli aggiornamenti ti consiglio di aggiungere una colonna di tipo rowversion (da non confondere con il tipo timestamp - che è deprecato) in ogni tabella : https://learn.microsoft.com/en-us/sql/t-sql/data-types/rowversion-transact-sql?view=sql-server-ver16

  • Re: Problema collegamento Access su SQL

    29/04/2025 - max.riservo ha scritto:


    Penso che l'id di tipo bigint crei proprio lui il problema... e come prima cosa mi concentrei su di esso.

    Ragionevolmente è il (o un) colpevole.

    Se vuoi gestire da Access anche gli aggiornamenti ti consiglio di aggiungere una colonna di tipo rowversion (da non confondere con il tipo timestamp - che è deprecato) in ogni tabella : https://learn.microsoft.com/en-us/sql/t-sql/data-types/rowversion-transact-sql?view=sql-server-ver16

    Ciao Max... e se si creasse una View della tabella in SqlServer dove si trasforma l' id di tipo bigint in un tipo int e, poi collegare questa in MsAccess ?
    https://learn.microsoft.com/it-it/sql/relational-databases/views/create-views?view=sql-server-ver16

    CREATE VIEW dbo.YourTable
    AS
    SELECT 
        CONVERT(int, id) AS id, ....
  • Re: Problema collegamento Access su SQL

    Scusate, ma ora mi sono perso.

    Partiamo che il mio scopo in queste tabelle è solo interrogare e non aggiornare.

    Come dice max, una soluzione potrebbe essere l'aggiunta di una colonna sulle 4 tabelle che ho a livello di server sql?  Su due piedi non dovrebbe succedere niente ma non ho mai provato, non vorrei far casino.

    Oppure se non ho capito male, creare un db che altro non è la vista di quello che devo interrogare, ovvero FGWmsErp, chiamarlo FGWmsErpAccess, importare tutti i campi tranne quello incriminato ed aggiungere un id standard.

    Attualmente, fatto appena adesso, ho creato quattro query PassThrough per le quattro tabelle, e le interrogo così.

    Chiedo se per caso, il server sql, ha una procedura guidata per creare una vista del DB, magari potendo scegliere le colonne da importare nel DB nuovo (e quindi interrogando la vista creata e non più FGWmsErp)

  • Re: Problema collegamento Access su SQL

    Ciao Max... e se si creasse una View della tabella in SqlServer dove si trasforma l' id di tipo bigint in un tipo int e, poi collegare questa in MsAccess ?

    Ciao Franco ... potrebbe essere una soluzione, se non serve aggiornare i dati (mi risulta che le view non permettano l'aggiornamento).

    Altra soluzione, se praticabile, è trasformare direttamente nella tabella il bigint in int.

    Un range di 2^31-1 (quanto gestisce il formato int con 4 bytes)  mi sembra discretamente sufficiente per usi ordinari : https://learn.microsoft.com/en-us/sql/t-sql/data-types/int-bigint-smallint-and-tinyint-transact-sql?view=sql-server-ver16

Devi accedere o registrarti per scrivere nel forum
17 risposte