Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

"Operacja musi wykorzystywać kwerendę którą można wykorzystywać"

976 views
Skip to first unread message

Adam

unread,
Jun 26, 2009, 5:02:01 AM6/26/09
to
Chc� synchronizowa� dane tabeli mojego programu z danymi zewn�trznego
systemu.

W mojej bazie przetrzymuj� id rekord�w bazy zewn�trznej i dokonuj�
z��czenia tych dw�ch tabel.

Wybra�em kwerend� aktualizuj�c� ale mam powy�szy b��d. Z tego co
przeczyta�em na ten temat to widz�, �e ta kwerenda s�u�y do aktualizacji
danych z pojedynczych tabel.

Co mog� zrobi� �eby dokona� synchronizacji danych?

Przemysław Rachwał

unread,
Jun 26, 2009, 5:05:20 AM6/26/09
to
On 26 Cze, 11:02, Adam <adam70...@op.pl> wrote:
> Chcę synchronizować dane tabeli mojego programu z danymi zewnętrznego
> systemu.
>
> W mojej bazie przetrzymuję id rekordów bazy zewnętrznej i dokonuję
> złączenia tych dwóch tabel.
>
> Wybrałem kwerendę aktualizującą ale mam powyższy błąd. Z tego co
> przeczytałem na ten temat to widzę, że ta kwerenda służy do aktualizacji
>   danych z pojedynczych tabel.
>
> Co mogę zrobić żeby dokonać synchronizacji danych?

przypuszczam że tabela do której się podłączyłeś jest tylko do odczytu
co utrudnia stworzenie kwerendy aktualizującej ustaw we właściwościach
kwerendy: Typ zestawu rekordów: Dynamiczny (niespójne aktualizacje) -
powinno pomóc

Adam

unread,
Jun 26, 2009, 5:29:42 AM6/26/09
to
Z�o�enie jest mojej tabeli oraz widoku z bazy zewn�trznej (z niego
czytam w�a�nie dane)

nie mog� znale�� opcji Typ zestawu rekord�w?

Przemys�aw Rachwa� wrote:
> On 26 Cze, 11:02, Adam <adam70...@op.pl> wrote:

>> Chc� synchronizowa� dane tabeli mojego programu z danymi zewn�trznego
>> systemu.
>>
>> W mojej bazie przetrzymuj� id rekord�w bazy zewn�trznej i dokonuj�
>> z��czenia tych dw�ch tabel.
>>
>> Wybra�em kwerend� aktualizuj�c� ale mam powy�szy b��d. Z tego co

>> przeczyta�em na ten temat to widz�, �e ta kwerenda s�u�y do aktualizacji
>> danych z pojedynczych tabel.
>>


>> Co mog� zrobi� �eby dokona� synchronizacji danych?
>

> przypuszczam �e tabela do kt�rej si� pod��czy�e� jest tylko do odczytu
> co utrudnia stworzenie kwerendy aktualizuj�cej ustaw we w�a�ciwo�ciach
> kwerendy: Typ zestawu rekord�w: Dynamiczny (niesp�jne aktualizacje) -
> powinno pomďż˝

Przemysław Rachwał

unread,
Jun 26, 2009, 6:39:29 AM6/26/09
to
On 26 Cze, 11:29, Adam <adam70...@op.pl> wrote:
> Złożenie jest mojej tabeli oraz widoku z bazy zewnętrznej (z niego
> czytam właśnie dane)
>
> nie mogę znaleźć opcji Typ zestawu rekordów?

>
> Przemysław Rachwał wrote:
> > On 26 Cze, 11:02, Adam <adam70...@op.pl> wrote:
> >> Chcę synchronizować dane tabeli mojego programu z danymi zewnętrznego
> >> systemu.
>
> >> W mojej bazie przetrzymuję id rekordów bazy zewnętrznej i dokonuję
> >> złączenia tych dwóch tabel.
>
> >> Wybrałem kwerendę aktualizującą ale mam powyższy błąd. Z tego co
> >> przeczytałem na ten temat to widzę, że ta kwerenda służy do aktualizacji
> >>   danych z pojedynczych tabel.
>

> >> Co mogę zrobić żeby dokonać synchronizacji danych?
>
> > przypuszczam że tabela do której się podłączyłeś jest tylko do odczytu
> > co utrudnia stworzenie kwerendy aktualizującej ustaw we właściwościach
> > kwerendy: Typ zestawu rekordów: Dynamiczny (niespójne aktualizacje) -
> > powinno pomóc
>
>

prawoklikiem w szare (tam gdzie są bazy tabele i kwerendy jak się je
doda) w okienku QBE, właściwości

Adam

unread,
Jun 26, 2009, 7:33:00 AM6/26/09
to
Przemys�aw Rachwa� wrote:

> On 26 Cze, 11:29, Adam <adam70...@op.pl> wrote:
>> Z�o�enie jest mojej tabeli oraz widoku z bazy zewn�trznej (z niego
>> czytam w�a�nie dane)
>>
>> nie mog� znale�� opcji Typ zestawu rekord�w?
>>
>> Przemys�aw Rachwa� wrote:
>>> On 26 Cze, 11:02, Adam <adam70...@op.pl> wrote:
>>>> Chc� synchronizowa� dane tabeli mojego programu z danymi zewn�trznego
>>>> systemu.
>>>> W mojej bazie przetrzymuj� id rekord�w bazy zewn�trznej i dokonuj�
>>>> z��czenia tych dw�ch tabel.
>>>> Wybra�em kwerend� aktualizuj�c� ale mam powy�szy b��d. Z tego co
>>>> przeczyta�em na ten temat to widz�, �e ta kwerenda s�u�y do aktualizacji
>>>> danych z pojedynczych tabel.

>>>> Co mog� zrobi� �eby dokona� synchronizacji danych?
>>> przypuszczam �e tabela do kt�rej si� pod��czy�e� jest tylko do odczytu
>>> co utrudnia stworzenie kwerendy aktualizuj�cej ustaw we w�a�ciwo�ciach
>>> kwerendy: Typ zestawu rekord�w: Dynamiczny (niesp�jne aktualizacje) -
>>> powinno pom�c
>>
>
> prawoklikiem w szare (tam gdzie sďż˝ bazy tabele i kwerendy jak siďż˝ je
> doda) w okienku QBE, w�a�ciwo�ci
Znalaz�em t� opcj� (w kwerendzie wybieraj�cej) i jak korzystam z niej to
nadal mam tďż˝ samďż˝ sytuacjďż˝.
Czy to �e w kwerendzie wybieraj�cej korzystam z po��czenia tabeli i
tabeli (widoku) ?
Mo�e to ten widok tutaj stanowi problem?

Krzysztof Naworyta

unread,
Jun 26, 2009, 7:52:24 AM6/26/09
to
Adam wrote:

||| Z�o�enie jest mojej tabeli oraz widoku z bazy zewn�trznej (z niego
||| czytam w�a�nie dane)
|||
||| nie mog� znale�� opcji Typ zestawu rekord�w?

||||| Chcďż˝ synchronizowaďż˝ dane tabeli mojego programu z danymi


||||| zewn�trznego systemu.
||||| W mojej bazie przetrzymuj� id rekord�w bazy zewn�trznej i dokonuj�
||||| z��czenia tych dw�ch tabel.
||||| Wybra�em kwerend� aktualizuj�c� ale mam powy�szy b��d. Z tego co
||||| przeczyta�em na ten temat to widz�, �e ta kwerenda s�u�y do
||||| aktualizacji danych z pojedynczych tabel.
||||| Co mog� zrobi� �eby dokona� synchronizacji danych?
|||| przypuszczam �e tabela do kt�rej si� pod��czy�e� jest tylko do
|||| odczytu co utrudnia stworzenie kwerendy aktualizuj�cej ustaw we
|||| w�a�ciwo�ciach kwerendy: Typ zestawu rekord�w: Dynamiczny
|||| (niesp�jne aktualizacje) - powinno pom�c
|||
||
|| prawoklikiem w szare (tam gdzie sďż˝ bazy tabele i kwerendy jak siďż˝ je
|| doda) w okienku QBE, w�a�ciwo�ci

| Czy to �e w kwerendzie wybieraj�cej korzystam z po��czenia tabeli i


| tabeli (widoku) ?
| Mo�e to ten widok tutaj stanowi problem?

Czy ten widok jest jakoďż˝ do bazy podlinkowany?
Czy access widzi co w nim jest kluczem g��wnym?
Czy tabela ma klucz g��wny ?

Podaj troch� wi�cej szczeg��w, cho�by SQL tej kwerendy...

--
KN

Adam

unread,
Jun 26, 2009, 8:02:25 AM6/26/09
to
A wi�c problem og�lnie rozwi�za�em w ten spos�b:
- aktualizowa�em z�o�enie tabeli A (aktualizowana) z tabl� B (do��czony
widok)
- wynik z tabeli B przepisuj� tworz�c tabel� T
- z�o�enie A z T daje bezproblemow� aktualizacj� tabeli A warto�ciami z T

Teraz to co zaobserwowa�em:

Pod serwerem sql pr�ba zmiany warto�ci w widoku ko�czy si� b��dem:
niedostateczne informacje o kolumnie klucza w celu aktualizacji lub
od�wie�ania

Adam

unread,
Jun 26, 2009, 9:06:17 AM6/26/09
to
Poni�ej skrypt tworz�cy baz� ze wszystkim (w widokach jest ten kt�ry nie
daje mo�liwo�ci zmiany warto�ci nazwy TW):

use master
GO
IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name =
N'testView')
DROP DATABASE [testView]
GO

CREATE DATABASE [testView] ON (NAME = N'testView_Data', FILENAME =
N'C:\Program Files\Microsoft SQL Server\MSSQL\data\testView_Data.MDF' ,
SIZE = 1, FILEGROWTH = 10%) LOG ON (NAME = N'testView_Log', FILENAME =
N'C:\Program Files\Microsoft SQL Server\MSSQL\data\testView_Log.LDF' ,
SIZE = 1, FILEGROWTH = 10%)
COLLATE Polish_CI_AS
GO

exec sp_dboption N'testView', N'autoclose', N'false'
GO

exec sp_dboption N'testView', N'bulkcopy', N'false'
GO

exec sp_dboption N'testView', N'trunc. log', N'false'
GO

exec sp_dboption N'testView', N'torn page detection', N'true'
GO

exec sp_dboption N'testView', N'read only', N'false'
GO

exec sp_dboption N'testView', N'dbo use', N'false'
GO

exec sp_dboption N'testView', N'single', N'false'
GO

exec sp_dboption N'testView', N'autoshrink', N'false'
GO

exec sp_dboption N'testView', N'ANSI null default', N'false'
GO

exec sp_dboption N'testView', N'recursive triggers', N'false'
GO

exec sp_dboption N'testView', N'ANSI nulls', N'false'
GO

exec sp_dboption N'testView', N'concat null yields null', N'false'
GO

exec sp_dboption N'testView', N'cursor close on commit', N'false'
GO

exec sp_dboption N'testView', N'default to local cursor', N'false'
GO

exec sp_dboption N'testView', N'quoted identifier', N'false'
GO

exec sp_dboption N'testView', N'ANSI warnings', N'false'
GO

exec sp_dboption N'testView', N'auto create statistics', N'true'
GO

exec sp_dboption N'testView', N'auto update statistics', N'true'
GO

if( (@@microsoftversion / power(2, 24) = 8) and (@@microsoftversion &
0xffff >= 724) )
exec sp_dboption N'testView', N'db chaining', N'false'
GO

use [testView]
GO

if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[FK_SM_MG]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[SM] DROP CONSTRAINT FK_SM_MG
GO

if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[FK_CN_TW]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CN] DROP CONSTRAINT FK_CN_TW
GO

if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[FK_SM_TW]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[SM] DROP CONSTRAINT FK_SM_TW
GO

if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[VError]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[VError]
GO

if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[VOK1]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[VOK1]
GO

if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[ViewError1]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[ViewError1]
GO

if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[vSM_Sum]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vSM_Sum]
GO

if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[CN]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[CN]
GO

if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[SM]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[SM]
GO

if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[MG]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[MG]
GO

if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[TW]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[TW]
GO

CREATE TABLE [MG] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[name] [varchar] (50) COLLATE Polish_CI_AS NOT NULL ,
CONSTRAINT [PK_MG] PRIMARY KEY CLUSTERED ([id]) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [TW] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[name] [varchar] (50) COLLATE Polish_CI_AS NOT NULL ,
CONSTRAINT [PK_TW] PRIMARY KEY CLUSTERED ([id]) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [CN]
(
[id] [int] IDENTITY (1, 1) NOT NULL ,
[twId] [int] NOT NULL ,
[type] [int] NOT NULL ,
[price] [float] NOT NULL ,
CONSTRAINT [PK_CN] PRIMARY KEY CLUSTERED ([id]) ON [PRIMARY] ,
CONSTRAINT [FK_CN_TW] FOREIGN KEY ([twId]) REFERENCES [TW] ([id])
) ON [PRIMARY]
GO

CREATE TABLE [SM] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[twId] [int] NOT NULL ,
[mgId] [int] NOT NULL ,
[state] [float] NOT NULL ,
CONSTRAINT [PK_SM] PRIMARY KEY CLUSTERED ([id]) ON [PRIMARY] ,
CONSTRAINT [FK_SM_MG] FOREIGN KEY ([mgId]) REFERENCES [MG] ([id]),
CONSTRAINT [FK_SM_TW] FOREIGN KEY ([twId]) REFERENCES [TW] ([id])
) ON [PRIMARY]
GO


SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE VIEW dbo.vSM_Sum
AS
SELECT twId, SUM(state) AS state
FROM dbo.SM
GROUP BY twId

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE VIEW dbo.VError
AS
SELECT dbo.TW.id, dbo.TW.name, dbo.vSM_Sum.state, CN_T1.price AS
price1, CN_T2.price AS price2
FROM dbo.TW INNER JOIN
dbo.CN CN_T1 ON dbo.TW.id = CN_T1.twId INNER JOIN
dbo.CN CN_T2 ON dbo.TW.id = CN_T2.twId INNER JOIN
dbo.vSM_Sum ON dbo.TW.id = dbo.vSM_Sum.twId
WHERE (CN_T1.type = 1) AND (CN_T2.type = 2)

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE VIEW dbo.Vok1
AS
SELECT dbo.TW.id, dbo.TW.name, dbo.vSM_Sum.state
FROM dbo.TW INNER JOIN
dbo.vSM_Sum ON dbo.TW.id = dbo.vSM_Sum.twId

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE VIEW dbo.ViewError1
AS
SELECT dbo.TW.id, dbo.TW.name, dbo.vSM_Sum.state, CN_T1.price AS p1,
CN_T2.price AS p2
FROM dbo.TW INNER JOIN
dbo.CN CN_T1 ON dbo.TW.id = CN_T1.twId INNER JOIN
dbo.CN CN_T2 ON dbo.TW.id = CN_T2.twId INNER JOIN
dbo.vSM_Sum ON dbo.TW.id = dbo.vSM_Sum.twId
WHERE (CN_T1.type = 1) AND (CN_T2.type = 2)

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

INSERT INTO [testView].[dbo].[MG] VALUES('MG1')
INSERT INTO [testView].[dbo].[MG] VALUES('MG2')
INSERT INTO [testView].[dbo].[MG] VALUES('MG3')

INSERT INTO [testView].[dbo].[TW] VALUES('TW1')
INSERT INTO [testView].[dbo].[TW] VALUES('TW2')
INSERT INTO [testView].[dbo].[TW] VALUES('TW3')

INSERT INTO [testView].[dbo].[CN] VALUES(1, 1, '101')
INSERT INTO [testView].[dbo].[CN] VALUES(1, 2, '102')
INSERT INTO [testView].[dbo].[CN] VALUES(2, 1, '201')
INSERT INTO [testView].[dbo].[CN] VALUES(2, 2, '202')
INSERT INTO [testView].[dbo].[CN] VALUES(3, 1, '301')
INSERT INTO [testView].[dbo].[CN] VALUES(3, 2, '302')

INSERT INTO [testView].[dbo].[SM] VALUES( 1, 1, '50')
INSERT INTO [testView].[dbo].[SM] VALUES( 1, 2, '150')
INSERT INTO [testView].[dbo].[SM] VALUES( 2, 1, '200')
INSERT INTO [testView].[dbo].[SM] VALUES( 3, 1, '130')
INSERT INTO [testView].[dbo].[SM] VALUES( 3, 1, '140')
INSERT INTO [testView].[dbo].[SM] VALUES( 3, 1, '30')

Przemysław Rachwał

unread,
Jun 26, 2009, 12:44:34 PM6/26/09
to

co jest �r�d�em danych kt�re chcesz poprawi� kwerend�
by� mo�e ca�o�� mo�na zrealizowa� z poziomu SQL-serwer-a . Ma od do
dyspozycji Linked Servers, dzieki temu mo�na podlinkowa� baz� Oraclow�
lub plik Access, tudzieďż˝ inne dane

--
Przemek

"Non sunt multiplicanda entia sine necessitate"
http://vbamania.blogspot.com

0 new messages