Dzień dobry,
chcę zaktualizować kartoteki produktów, konkretnie ich nazwy z pliku Excel, na poziomie bazy.
Czy wystarczy tylko update na CDN.TwrKarty, czy jeszcze jakaś inną tabelę powinienem wziąć pod uwagę?
pozdrawiam
GK
Aktualizacja nazw towarów na kartotekach
Moderator: mikey
-
- Posty: 145
- Rejestracja: 24 lut 2013, 12:41
- Rola: Administrator CDN XL
- Lokalizacja: Skarżysko-Kamienna
Re: Aktualizacja nazw towarów na kartotekach
W dokumentacji bazy danych relacje z tabelą TwrKarty tworzone są przy pomocy pól: TwrGIDNumer, TwrGIDTyp
więc nie ma problemu zmiany samej nazwy towaru (Twr_Nazwa?)
Pozostają tabele gdzie to pole jest przepisywane (TraElem, ZlecElem, ......) przy tworzeniu dokumentów.
Wyszukiwanie istniejących będzie po Twr_Kod?
Nowe proponuję dodawać poprzez API (grupy, itp.)
więc nie ma problemu zmiany samej nazwy towaru (Twr_Nazwa?)
Pozostają tabele gdzie to pole jest przepisywane (TraElem, ZlecElem, ......) przy tworzeniu dokumentów.
Wyszukiwanie istniejących będzie po Twr_Kod?
Nowe proponuję dodawać poprzez API (grupy, itp.)
Re: Aktualizacja nazw towarów na kartotekach
Generalnie muszę zmienić tylko nazwy na kartotekach, nie na transakcjach, więc w takim razie jeden update powinien wystarczyć.
A tak na przyszłość, czy API umożliwia Update czy tylko dodawanie nowych rekordów?
pozdr
GK
A tak na przyszłość, czy API umożliwia Update czy tylko dodawanie nowych rekordów?
pozdr
GK
-
- Posty: 145
- Rejestracja: 24 lut 2013, 12:41
- Rola: Administrator CDN XL
- Lokalizacja: Skarżysko-Kamienna
Re: Aktualizacja nazw towarów na kartotekach
Tylko dodawanie, plus operacje na cenach
Re: Aktualizacja nazw towarów na kartotekach
Okazuje się, że jeszcze jest TwG_Nazwa na TwrGrupy. Zastanawiam się co jeszcze....? Może jakaś podpowiedź?
Re: Aktualizacja nazw towarów na kartotekach
Kod: Zaznacz cały
--sprawdzenie czy istnieje tabela tymczasowa
if object_id('#IT') is not null
begin
--jeśli tak to ją usuwa
DROP TABLE #IT;
end
if object_id('#IT2') is not null
begin
--jeśli tak to ją usuwa
DROP TABLE #IT2;
end
Go
Begin
/*
Pobranie danych z pliku Excel i zapisanie do tabeli tymczasowej #IT
Plik Excel ma trzy kolumny:
- KodN : Nowy kod w systemie
- KodS : Aktualny kod w systemie
- Nazwa : Nowa nazwa kartoteki
*/
SELECT KodN, Nazwa, KodS INTO #IT FROM OPENROWSET(
'Microsoft.ACE.OLEDB.12.0',
-- provider_string z IMEX
'Excel 8.0;IMEX=1;HDR=Yes;Database=D:\SQL\sql.xls',
'Select KodN, Nazwa, KodS FROM [Nazwa$]' );
End
Begin
-- Kopiowanie tylko istniejących kartotek do tabeli tymczasowej #IT2
select * INTO #IT2 FROM #IT IT
WHERE EXISTS (
SELECT null FROM CDN.TwrKarty TK WHERE IT.KodS = TK.Twr_Kod)
/*
Aktualizacja kart towarowych
*/
UPDATE CDN.TwrKarty
SET Twr_Nazwa = Nazwa,
Twr_Kod = KodN
FROM CDN.TwrKarty, #IT2
WHERE Twr_Kod = KodS
UPDATE CDN.TwrGrupy
SET TwG_Nazwa = Nazwa,
TwG_Kod = KodN
FROM CDN.TwrGrupy, #IT2
WHERE TwG_Kod = KodS
UPDATE CDN.TwrGrupyDom
SET TGD_Kod = KodN
FROM CDN.TwrGrupyDom, #IT2
WHERE TGD_Kod = KodS
DROP TABLE #IT
DROP TABLE #IT2
END
Pozdrawiam
Wojtek Cyrklewicz
Wojtek Cyrklewicz