Principale utente con più risposte
Errore grave con tabelle SQL server collegate ODBC ad access

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
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
- Modificato Giorgio RancatiModerator giovedì 1 settembre 2016 21:07 sintassi
- Proposto come risposta Fabrizio-GMVP, Moderator sabato 3 settembre 2016 19:02
- Contrassegnato come risposta Fabrizio-GMVP, Moderator domenica 4 settembre 2016 13:40
Tutte le risposte
-
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 -
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.
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 -
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
-
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
-
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
- Modificato Giorgio RancatiModerator giovedì 1 settembre 2016 21:07 sintassi
- Proposto come risposta Fabrizio-GMVP, Moderator sabato 3 settembre 2016 19:02
- Contrassegnato come risposta Fabrizio-GMVP, Moderator domenica 4 settembre 2016 13:40
-
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 (ROWVERSION) come 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.
-
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 -