none
Errore grave con tabelle SQL server collegate ODBC ad access RRS feed

  • Domanda

  • Buongiorno.

    Ho un serio problema con i driver ODBC di SQL server nativi collegando tabelle SQL server 2014/2016 ad un database access 2013/2016.

    Utilizzo gli ODBC DRIVER 11/13 FOR SQL SERVER

    Se tento di cancellare, inserire o aggiornare dati in alcune righe della tabella ottengo questo errore.

    The Microsoft Access database engine stopped the process because you and another user are attempting to change the same data at the same time. (Error 3197)

    La cosa inspiegabile è che nella stessa tabella in righe diverse mi lascia fare qualsiasi operazione in altre righe della stessa tabbella va in errore e non posso modificare quella riga (!?).

    Confrontando le 2 righe e i rispettivi dati in colonna non ci sono differenze ! ma una delle due righe non può essere modificata.

    Ho cercato su web ma i suggerimenti (elimianare valori null e via dicendo) non sono stati utili.

    Filippo Quaranta

    giovedì 1 settembre 2016 10:09

Risposte

  • Salve Filippo,

    access in fase di update di una riga inserisce nella condizione where oltre all'Id anche tutti i campi della tabella e li confronta con la versione precedente presente in memoria. La tua tabella ha diversi campi calcolati che richiamano anche funzioni e probabilmente in alcune situazioni i valori riletti non sono identici a quelli presenti nella memoria di access.

    Prova ad aggiungere un nuovo campo nella tabella di tipo ROWVERSION

    ALTER TABLE  [dbo].[tFattureT] ADD VersioneRiga ROWVERSION

    questo snellisce il confronto della versione precedente della riga, al posto di confrontare tutti i campi access inserirà nella condizione where i soli campi IDFattureT e quello di tipo ROWVERSION.

    Per maggiori info vedi: rowversion (Transact-SQL) 

    Ciao

    Giorgio Rancati


    giovedì 1 settembre 2016 21:05
    Moderatore

Tutte le risposte

  • <tfoot></tfoot>
    dbo_tFattureT 
    IDFattureT ID_dt IDProformaT Ord FatturaN DataFatt AnnoFatt MeseFatt meseEsteso Descrizione Notes ScadenzaPagamento ggScadPagamento Incassata IncassataInData importoProformaRicalc contributiPrevidenzialiRicalcArr contributiPrevidenzialiRicalc totaleParziale1Ricalc IVARicalcArr IVARicalc totaleParziale2Ricalc ritenutaAccontoRicalcArr ritenutaAccontoRicalc ImportoFatt Insoluto
    1457 27/01/2013 11.13.30 1651 1 3 31/01/2013 2013 1 January MODIFICA WANDA PER RICERCA PER CODICE ISSN (rapportino n. 1022 del 24/01/2013).
    30/04/2013 pagata -1
    600 0 24 624 0 131,04 755,04 0 124,8 630,24 0
    1458 27/01/2013 11.21.22 1649 2 13 04/04/2013 2013 4 April SITO BIANCOBUFALA (ACCONTO)
    15/03/2013 pagata -1 04/04/2013 500 0 20 520 0 109,2 629,2 0 104 525,2 0
    giovedì 1 settembre 2016 12:48
  • Queste due righe hanno come differenza che la colonna "incassata in data " in una riga contiene il dato e l'altra non lo contiene eppure sono tutte e due editabili e si può inserire e cancellare, nel precedente post la riga sopra è editabile la riga sotto NO !! io non trovo un comun denominatore in cosa possa scatenare una cosa simile.

    <tfoot></tfoot>
    dbo_tFattureT
    IDFattureT ID_dt IDProformaT Ord FatturaN DataFatt AnnoFatt MeseFatt meseEsteso Descrizione Notes ScadenzaPagamento ggScadPagamento Incassata IncassataInData importoProformaRicalc contributiPrevidenzialiRicalcArr contributiPrevidenzialiRicalc totaleParziale1Ricalc IVARicalcArr IVARicalc totaleParziale2Ricalc ritenutaAccontoRicalcArr ritenutaAccontoRicalc ImportoFatt Insoluto
    87 10/10/2011 19.04.03 411 1 43 08/10/2007 2007 10 October Consulenza informatica svolta per Vs. nome e conto nel mese di LUGLIO/AGOSTO 2007.
    30/09/2007 pagata -1
    415 0 16,6 431,6 0 86,32 517,92 0 86,32 431,6 0
    88 10/10/2011 19.04.03 412 1 40 13/09/2007 2007 9 September Consulenza svolta per Vs. nome e conto nel mese di LUGLIO 2007.
    10/09/2007 pagata -1 13/09/2007 7000 0 280 7280 0 1456 8736 0 1456 7280 0

     
    giovedì 1 settembre 2016 12:54
  • Ecco la struttura della tabella

    USE [FilippoQuaranta]
    GO

    /****** Object:  Table [dbo].[tFattureT]    Script Date: 01/09/2016 16.08.50 ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    CREATE TABLE [dbo].[tFattureT](
    [IDFattureT] [int] IDENTITY(1,1) NOT NULL,
    [ID_dt] [datetime] NOT NULL,
    [IDProformaT] [int] NOT NULL,
    [Ord] [int] NOT NULL,
    [FatturaN] [int] NULL,
    [DataFatt] [datetime] NULL,
    [AnnoFatt]  AS (datepart(year,[DataFatt])),
    [MeseFatt]  AS (datepart(month,[DataFatt])),
    [meseEsteso]  AS (datename(month,[DataFatt])),
    [Descrizione] [nvarchar](2048) NOT NULL,
    [Notes] [nvarchar](255) NULL,
    [ScadenzaPagamento] [datetime] NOT NULL,
    [ggScadPagamento]  AS ([dbo].[fn_ggScadPagamento]([IDFattureT])),
    [Incassata] [int] NOT NULL,
    [IncassataInData] [datetime] NULL,
    [importoProformaRicalc]  AS (CONVERT([decimal](28,2),[dbo].[fn_importoProformaInFattura]([IDFattureT]))),
    [contributiPrevidenzialiRicalcArr] [decimal](28, 2) NOT NULL,
    [contributiPrevidenzialiRicalc]  AS (CONVERT([decimal](28,2),[dbo].[fn_importoContribPrevInFattura]([IDFattureT])+[contributiPrevidenzialiRicalcArr])),
    [totaleParziale1Ricalc]  AS (CONVERT([decimal](28,2),[dbo].[fn_importoProformaInFattura]([IDFattureT])+[dbo].[fn_importoContribPrevInFattura]([IDFattureT]),(0))),
    [IVARicalcArr] [decimal](28, 2) NOT NULL,
    [IVARicalc]  AS (CONVERT([decimal](28,2),[dbo].[fn_IVA_fattura]([IDFattureT])+[IVARicalcArr])),
    [totaleParziale2Ricalc]  AS (CONVERT([decimal](28,2),([dbo].[fn_importoProformaInFattura]([IDFattureT])+[dbo].[fn_importoContribPrevInFattura]([IDFattureT]))+[dbo].[fn_IVA_fattura]([IDFattureT]),(0))),
    [ritenutaAccontoRicalcArr] [decimal](28, 2) NOT NULL,
    [ritenutaAccontoRicalc]  AS (CONVERT([decimal](28,2),[dbo].[fn_importoRitAccontoInFattura]([IDFattureT])+[ritenutaAccontoRicalcArr])),
    [ImportoFatt] [decimal](28, 2) NOT NULL,
    [Insoluto] [int] NOT NULL,
     CONSTRAINT [PK_tFattT_Fatture] PRIMARY KEY CLUSTERED 
    (
    [IDFattureT] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]

    GO

    ALTER TABLE [dbo].[tFattureT] ADD  CONSTRAINT [DF_tFattureT_dataIntro]  DEFAULT (getdate()) FOR [ID_dt]
    GO

    ALTER TABLE [dbo].[tFattureT] ADD  CONSTRAINT [DF_tFattureT_IDProformaT]  DEFAULT ((0)) FOR [IDProformaT]
    GO

    ALTER TABLE [dbo].[tFattureT] ADD  CONSTRAINT [DF_tFattureT_Ord]  DEFAULT ((0)) FOR [Ord]
    GO

    ALTER TABLE [dbo].[tFattureT] ADD  CONSTRAINT [DF_tFattureT_Descrizione]  DEFAULT (N'-') FOR [Descrizione]
    GO

    ALTER TABLE [dbo].[tFattureT] ADD  CONSTRAINT [DF_tFattT_Fatture_Pagata]  DEFAULT ((0)) FOR [Incassata]
    GO

    ALTER TABLE [dbo].[tFattureT] ADD  CONSTRAINT [DF_tFattureT_contributiPrevidenzialiRicalcArr]  DEFAULT ((0)) FOR [contributiPrevidenzialiRicalcArr]
    GO

    ALTER TABLE [dbo].[tFattureT] ADD  CONSTRAINT [DF_tFattureT_IVARicalcArr]  DEFAULT ((0)) FOR [IVARicalcArr]
    GO

    ALTER TABLE [dbo].[tFattureT] ADD  CONSTRAINT [DF_tFattureT_ritenutaAccontoRicalcArr]  DEFAULT ((0)) FOR [ritenutaAccontoRicalcArr]
    GO

    ALTER TABLE [dbo].[tFattureT] ADD  CONSTRAINT [DF_tFattT_Fatture_ImportoFatt]  DEFAULT ((0)) FOR [ImportoFatt]
    GO

    ALTER TABLE [dbo].[tFattureT] ADD  CONSTRAINT [DF_tFattureT_Insoluto]  DEFAULT ((0)) FOR [Insoluto]
    GO

    ALTER TABLE [dbo].[tFattureT]  WITH CHECK ADD  CONSTRAINT [FK_tFattT_Fatture_tFattT] FOREIGN KEY([IDProformaT])
    REFERENCES [dbo].[tProformaT] ([IDProformaT])
    ON UPDATE CASCADE
    GO

    ALTER TABLE [dbo].[tFattureT] CHECK CONSTRAINT [FK_tFattT_Fatture_tFattT]
    GO

    ALTER TABLE [dbo].[tFattureT]  WITH CHECK ADD  CONSTRAINT [CK_tFattureT] CHECK  ((rtrim([Descrizione])<>''))
    GO

    ALTER TABLE [dbo].[tFattureT] CHECK CONSTRAINT [CK_tFattureT]
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_AggregateType', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'IDFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'IDFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'IDFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'IDFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_CurrencyLCID', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'IDFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_TextAlign', @value=NULL , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'IDFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_AggregateType', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'IDProformaT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'IDProformaT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'IDProformaT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'IDProformaT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_CurrencyLCID', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'IDProformaT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_TextAlign', @value=NULL , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'IDProformaT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_AggregateType', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'Ord'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'Ord'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'Ord'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'Ord'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_CurrencyLCID', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'Ord'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_TextAlign', @value=NULL , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'Ord'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_AggregateType', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'FatturaN'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'FatturaN'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'FatturaN'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'FatturaN'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_CurrencyLCID', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'FatturaN'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_TextAlign', @value=NULL , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'FatturaN'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_AggregateType', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'DataFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'DataFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'DataFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'DataFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_CurrencyLCID', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'DataFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_TextAlign', @value=NULL , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'DataFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_AggregateType', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'AnnoFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'AnnoFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'AnnoFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'AnnoFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_CurrencyLCID', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'AnnoFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_TextAlign', @value=NULL , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'AnnoFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_AggregateType', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'MeseFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'MeseFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'MeseFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'MeseFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_CurrencyLCID', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'MeseFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_TextAlign', @value=NULL , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'MeseFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_AggregateType', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'Notes'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'Notes'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'Notes'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'Notes'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_CurrencyLCID', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'Notes'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_TextAlign', @value=NULL , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'Notes'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_AggregateType', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'ScadenzaPagamento'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'ScadenzaPagamento'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'ScadenzaPagamento'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'ScadenzaPagamento'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_CurrencyLCID', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'ScadenzaPagamento'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_TextAlign', @value=NULL , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'ScadenzaPagamento'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_AggregateType', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'Incassata'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'Incassata'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'Incassata'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'Incassata'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_CurrencyLCID', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'Incassata'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_TextAlign', @value=NULL , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'Incassata'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_AggregateType', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'IncassataInData'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'IncassataInData'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'IncassataInData'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'IncassataInData'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_CurrencyLCID', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'IncassataInData'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_TextAlign', @value=NULL , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'IncassataInData'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_AggregateType', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'ImportoFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'ImportoFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'ImportoFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'ImportoFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_CurrencyLCID', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'ImportoFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_TextAlign', @value=NULL , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT', @level2type=N'COLUMN',@level2name=N'ImportoFatt'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_AlternateBackThemeColorIndex', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_DatasheetForeThemeColorIndex', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_DatasheetGridlinesThemeColorIndex', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_DefaultView', @value=0x02 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_Filter', @value=NULL , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_FilterOnLoad', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_HideNewField', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_OrderBy', @value=N'[tFattT_Fatture].[DataFatt]' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_OrderByOn', @value=1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_OrderByOnLoad', @value=1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_Orientation', @value=NULL , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_TableMaxRecords', @value=10000 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_ThemeFontIndex', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT'
    GO

    EXEC sys.sp_addextendedproperty @name=N'MS_TotalsRow', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tFattureT'
    GO

    giovedì 1 settembre 2016 14:09
  • Ciao.

    Ho fatto un test.

    Se eseguo un operazione tramite una query access ovvero (ad esempio)

    UPDATE dbo_tFattureT SET dbo_tFattureT.IncassataInData = #12/31/2018# WHERE (((dbo_tFattureT.IDFattureT)=1458));

    *** Funziona regolarmente ***

    Quindi apparentemente basterebbe non metter mani direttamente nelle tabelle (e potrebbe anche andar bene) .

    Se poi però collego la tabella a un recordset di una maschera access.

    Il problema si ripresenta il RECORD E' IMMODIFICABILE.

    se tento di fare modifiche la form access mi restituisce un alert...

    THE MICROSOFT ACCESS DATABASE ENGINE STOPPED THE PROCESS BECAUSE

    YOU AND OTHER USER ARE ATTEMPTING TO CHANGE SAME DATA AT SAME TIME

    Che ovviamente non c'entra niente... poiche sono sulla macchina locale e 

    sono anche l'unico utente che ha aperto la tabella... e poi comunque gli altri record

    della maschera li modifica ! (ovviamente alcuni si... alcuni no... al solito senza motivo)

    Credimi è un bel problema perchè ho un applicazione sostanzialmente inutilizzabile !

    Filippo


    giovedì 1 settembre 2016 15:59
  • Salve Filippo,

    access in fase di update di una riga inserisce nella condizione where oltre all'Id anche tutti i campi della tabella e li confronta con la versione precedente presente in memoria. La tua tabella ha diversi campi calcolati che richiamano anche funzioni e probabilmente in alcune situazioni i valori riletti non sono identici a quelli presenti nella memoria di access.

    Prova ad aggiungere un nuovo campo nella tabella di tipo ROWVERSION

    ALTER TABLE  [dbo].[tFattureT] ADD VersioneRiga ROWVERSION

    questo snellisce il confronto della versione precedente della riga, al posto di confrontare tutti i campi access inserirà nella condizione where i soli campi IDFattureT e quello di tipo ROWVERSION.

    Per maggiori info vedi: rowversion (Transact-SQL) 

    Ciao

    Giorgio Rancati


    giovedì 1 settembre 2016 21:05
    Moderatore
  • Buonasera Sig. Rancati.

    Ho provato la Sua soluzione è funziona perfettamente.

    Penso di aver capito cosa succede. In sostanza le tabelle collegate in Access hanno una "rappresentazione" dei dati interni (ovvero quelli realmente esistenti nella tabella di SQL Server) diversa.

    Dalle mie verifiche il "malfunzionamento" avverebbe per gli arrotondamenti (ad es. la data Sql server è al millesimo in Access/ODBC si ferma al secondo).

    Ecco che mettendo un campo TIMESTAMP (ROWVERSIONcome da Lei suggerito  il confronto si limita a "certificare" attraverso PK + TimeStamp che la riga non è modificata (o vice versa).

    Quindi adesso il recordset è completamente modificabile e non genera più errori.

    Risolto !

    Grazie infinite.

    Filippo.

    sabato 3 settembre 2016 17:31
  • Prego Filippo,

    nel frattempo ho trovato un documento che tratta l'ottimizzazione di Access collegato a Sql server via odbc in cui tra le varie argomentazioni viene spiegato quanto da me suggerito.

    Optimizing Microsoft Office Access Applications Linked to SQL Server

    A mio parere vale la pena dare un'occhiata.

    Ciao
    Giorgio Rancati

    lunedì 5 settembre 2016 08:41
    Moderatore
  • Grazie.

    Spero in futuro di poter ricambiare.

    Filippo.

    lunedì 5 settembre 2016 15:34