Forum Coders' city Strona Gwna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UytkownicyUytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj si, by sprawdzi wiadomociZaloguj si, by sprawdzi wiadomoci   ZalogujZaloguj 

Potrzebuj szybkiej odpowiedzi na moje pytanie... Zasady

[Access 2010] Operacje na Recordset, uaktualnienie tabeli

Id do strony Poprzedni  1, 2, 3, 4, 5  Nastpny

 
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Bazy danych
Zobacz poprzedni temat :: Zobacz nastpny temat  
Autor Wiadomo
elfface



Doczy: 31 Pa 2012
Posty: 176

PostWysany: Czw Sty 03, 2019 11:52 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Witam ponownie i ponownie proba o pomoc. O ile kwerenda aktualizujca i doczajca sprawdza si wietnie przy pojedynczych rekordach, to mam pytanie: czy istnieje moliwo zaktualizowania i doczenia za pomoc tych kwerend kilku rekordw jednoczenie w tabeli, ktrej rdem pola jest pole innej tabeli??? I kolejne pytanie: jeeli typy danych w polach tabel si rni (tekst i liczba), to czy nie da si tego jako obej, na zasadzie wyciagnicia interesujcych mnie danych, np.: pole.Column(2)?
W zaczeniu przykad dotyczy tabel T_OpOcen i T_OpOcen_temp. Do T_OpOcen_temp importowane s dane z Excel, m.in. do pola Pesel, ktre jest polem tekstowym. Na podstawie tych danych chciabym zaktualizowa tabel T_OpOcen z zachowaniem zasady, by dla wsplnego Pesel (tekst) i ID_Osoby (liczba) w tych tabelach:
- aktualizowao tylko te rekordy, dla ktrych rok jest taki sam, ale oceny s rne
- dodawao rekordy, w zalenoci od wartoci pola rok, ktrych nie ma w T_OpOcen, a ktre znajduj si w zaimportowanych danych w T_OpOcen_temp.
Dla rozjanienia w tabeli T_OpOcen_temp zaznaczyem rekordy, ktre powyej opisaem.
Z gry dzikuj za pomoc :)



Test.7z
 Opis:

Pobierz
 Nazwa pliku:  Test.7z
 Wielko pliku:  24.63 KB
 Pobierano:  15 raz(y)


_________________
=8-T
Grzegorz Z.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
andie



Doczy: 17 Lut 2017
Posty: 5

PostWysany: Pon Sty 07, 2019 5:52 pm      Temat postu: Odpowiedz z cytatem Pisownia

Poniewa Karolina chyba jeszcze wituje, postaram si j zastpi ;-)

elfface, co Ty tutaj troch ciemniasz ;-) Typy w tabelach s zgodne, tylko e PESEL masz zapisany w tabeli T_Osoby (pole: Osoby_Pesel, typ danych tekst), a w tabeli T_OpOcen w polu ID_Osoby masz tylko odnonik do tabeli T_Osoby - dlatego te wywietla Ci si tam PESEL.

Majc to na uwadze, oczekiwane kwerendy mogyby wyglda tak:

UPDATE
Kod:
UPDATE T_OpOcen AS oc LEFT JOIN (T_Osoby AS os LEFT JOIN T_OpOcen_temp AS oct ON oct.Pesel = os.Osoby_Pesel) ON os.ID_Osoby = oc.ID_Osoby SET oc.opOcen_ocena = oct.ocena
WHERE oc.Opocen_rok = oct.rok and oc.opOcen_ocena <> oct.ocena;


INSERT INTO
Kod:
INSERT INTO T_OpOcen ( id_osoby, opOcen_rok, opOcen_ocena )
SELECT os.id_osoby, oct.rok, oct.ocena
FROM T_OpOcen_temp AS oct LEFT JOIN T_Osoby AS os ON oct.Pesel = os.Osoby_Pesel
WHERE NOT EXISTS (SElECT 1 FROM T_OpOcen as oc WHERE oc.id_osoby = os.id_osoby
AND oc.OpOcen_Rok = oct.rok);



andie
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
elfface_X
Go





PostWysany: Sro Sty 09, 2019 7:23 pm      Temat postu: Odpowiedz z cytatem Pisownia

Dziaa :) Serdeczne dziki za pomoc, sam bym tego nie zmajstrowa :) Pozdrawiam.
Powrt do gry
karolinavb
Site Admin


Doczy: 25 Maj 2005
Posty: 7905

PostWysany: Czw Sty 10, 2019 8:54 pm      Temat postu: Odpowiedz z cytatem Pisownia

Do andie
Dziki za zastpstwo.
------------------------------------
Elfface napisa:
Cytat:
Do T_OpOcen_temp importowane s dane z Excel, m.in. do pola Pesel, ktre jest polem tekstowym
W bazie Acc s odnoniki i wymagania na polach, co jest, e tak powiem w Excelu nie wiemy.
I tak na przykad dla danych jak w moim zaczniku mam rekord z Excela z peselem 44444444447 w tabeli T_OpOcen_temp.
Takiego pesela nie ma w T_Osoby w zaczniku.
Nic Elfface nie napisa, albo ja tego nie widz, e najpierw trzeba uzupenia T_Osoby.
Skutkiem wykonania kwerendy kw_andie_insert (andiego) jest komunikat jak na obrazku z powodu LEFT JOIN zamiast INNER…
W 1-szej kwerendzie te bym ten INNER.
?



Test_2_andie.rar
 Opis:

Pobierz
 Nazwa pliku:  Test_2_andie.rar
 Wielko pliku:  27.81 KB
 Pobierano:  17 raz(y)


LEFT_JOIN.png
 Opis:

Pobierz
 Nazwa pliku:  LEFT_JOIN.png
 Wielko pliku:  17.74 KB
 Pobierano:  16 raz(y)

Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
elfface



Doczy: 31 Pa 2012
Posty: 176

PostWysany: Pon Sty 14, 2019 3:16 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Dzie dobry. karolinavb i andie bardzo dzikuj za pomoc :) Zasada dziaania powinna by nastpujca:
1. Uzupenienie danych w T_Osoby na podstawie zaimportowanych danych z Excel do T_Osoby_temp.
2. Uzupenienie danych w T_OpOcen na podstawie zaimportowanych danych z Excel do T_OpOcen_temp.
Dokadnie w tej kolejnoci, ale rzeczywicie, w importowanym pliku Excel moe si pojawi jakis "lewy" Pesel.
Teraz z kolei zastanawiam si co zrobi w takim przypadku, a konkretnie w jaki sposb powiadomi uytkownika, e taka sytuacja ma miejsce, wskazujc ten konkretny PESEL? Oczywicie, mgbym w kwerendzie andiego doda w kryteriach: is null, ale to spowoduje utworzenie nowej, dodatkowej kwerendy. Moe jest na to jaki bardziej subtelny sposb? Dziki za t cenn uwag :) Ostatecznie, po testach kwerendy wygldaj nastpujco:
- doczajca:
Kod:
INSERT INTO T_OpOcen ( ID_Osoby, OpOcen_Rok, OpOcen_Ocena )
SELECT T_Osoby.ID_Osoby, T_OpOcen_temp.Rok, T_OpOcen_temp.Ocena
FROM T_OpOcen_temp INNER JOIN T_Osoby ON T_OpOcen_temp.Pesel = T_Osoby.Osoby_Pesel
WHERE (((Exists (SELECT 1 FROM T_OpOcen WHERE ID_Osoby = T_Osoby.ID_Osoby AND OpOcen_Rok = Rok))=False));

- aktualizujca:
Kod:
UPDATE (T_OpOcen INNER JOIN T_Osoby ON T_OpOcen.ID_Osoby = T_Osoby.ID_Osoby) INNER JOIN T_OpOcen_temp ON T_Osoby.Osoby_Pesel = T_OpOcen_temp.Pesel SET T_OpOcen.OpOcen_Rok = T_OpOcen_temp.Rok, T_OpOcen.OpOcen_Ocena = T_OpOcen_temp.Ocena
WHERE (((T_OpOcen.OpOcen_Rok)=[Rok]) AND ((T_OpOcen.OpOcen_Ocena)<>[Ocena]));

Pozdrawiam serdecznie i jeszcze raz bardzo dzikuj :)

_________________
=8-T
Grzegorz Z.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
karolinavb
Site Admin


Doczy: 25 Maj 2005
Posty: 7905

PostWysany: Czw Sty 17, 2019 8:26 pm      Temat postu: Odpowiedz z cytatem Pisownia

Zacznijmy w tym miejscu…
PESEL w tabeli T_Osoby to pole tekstowe o rozmiarze 255, po co, a ile to znakw ma Pesel?
Rozumiem, e T_Osoby_temp i T_OpOcen_temp to dane importowane z Excela,
wobec tego naleaoby te tabele przeskanowa na wstpie i usuwajc rekordy nie speniajce warunkw:
- dugoci pola
- poprawnoci Pesel (funkcje s na forum)
I dopiero potem uzupeni (insert) T_Osoby , a nastpnie T_OpOcen

Oraz skoro Rok ma w WHERE by rwny to po co, e tak powiem dla niego SET?
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
elfface



Doczy: 31 Pa 2012
Posty: 176

PostWysany: Pi Lut 01, 2019 8:51 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Pesel i dane osobowe pobieram z systemu, w ktrym ju jest sprawdzona jego poprawno, wic nie mam takiej potrzeby. Oczywicie, Pesel ma 11 znakw :) Dziki za sugestie, poniewa wanie dzisiaj wyszo, e plik excel i dane importowane do tabeli _temp musz by pene i idealne, wic ich "przeskanowanie" pod wzgldem dugoci pola, zawartoci pola, a w szczeglnoci zdublowanych wartoci okazao si wrcz konieczne :) Serdecznie dzikuj wszystkim za pomoc :)
_________________
=8-T
Grzegorz Z.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
elfface



Doczy: 31 Pa 2012
Posty: 176

PostWysany: Pi Lut 01, 2019 9:26 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

I jeszcze jedno pytanie, zakadam, e kto si ju z tym spotka. Chodzi o sposb wywietlania wartoci pola w widoku arkusza danych kwerendy: to samo pole (typ danych TAK/NIE) w dwch rnych kwerendach jest inaczej wywietlane, w jednej jako warto -1 a w drugiej jako "kwadracik z fistaszkiem". Co powoduje zmian na to: -1???


TAK_NIE_Tabela.png
 Opis:

Pobierz
 Nazwa pliku:  TAK_NIE_Tabela.png
 Wielko pliku:  15.57 KB
 Pobierano:  14 raz(y)


TAK_NIE_OK.png
 Opis:

Pobierz
 Nazwa pliku:  TAK_NIE_OK.png
 Wielko pliku:  7.76 KB
 Pobierano:  12 raz(y)


TAK_NIE_1.png
 Opis:

Pobierz
 Nazwa pliku:  TAK_NIE_1.png
 Wielko pliku:  5.57 KB
 Pobierano:  14 raz(y)


_________________
=8-T
Grzegorz Z.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
karolinavb
Site Admin


Doczy: 25 Maj 2005
Posty: 7905

PostWysany: Sob Lut 02, 2019 8:12 pm      Temat postu: Odpowiedz z cytatem Pisownia

Poprosz o t kwerend.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
elfface



Doczy: 31 Pa 2012
Posty: 176

PostWysany: Sob Lut 02, 2019 10:36 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Prosz bardzo. Q_OpOcena_Poz_Top3 oraz Q_Med_SZwSO i Q_Med_ZZdOK. Te dwa ostatnie zapytania s bardzo do siebie podobne, ale pole Osoby_Stan_Stanowiska wyglada w nich inaczej. Czy mona jako przyspieszyc dziaanie tych kwerend??? Przy 4 ty. rekordw troch - ok. 20 sekund trwa ich otwieranie?


Med.7z
 Opis:

Pobierz
 Nazwa pliku:  Med.7z
 Wielko pliku:  62.16 KB
 Pobierano:  11 raz(y)


_________________
=8-T
Grzegorz Z.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
Wywietl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Bazy danych Wszystkie czasy w strefie CET (Europa)
Id do strony Poprzedni  1, 2, 3, 4, 5  Nastpny
Strona 4 z 5

 
Skocz do:  
Moesz pisa nowe tematy
Moesz odpowiada w tematach
Nie moesz zmienia swoich postw
Nie moesz usuwa swoich postw
Nie moesz gosowa w ankietach
Moesz dodawa zaczniki na tym forum
Moesz pobiera pliki z tego forum




Debug: strone wygenerowano w 0.48527 sekund, zapytan = 13
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |