Autor Wątek: Masowe tworzenie i przypisywanie cech  (Przeczytany 5632 razy)

0 użytkowników i 2 Gości przegląda ten wątek.

Offline Lucus

  • Użytkownik
  • **
  • Wiadomości: 50
  • Reputacja +0/-0
  • Wersja programu: Subiekt Gt 1.70
Masowe tworzenie i przypisywanie cech
« dnia: Maj 23, 2022, 12:42:25 »
Cześć,

Potrzebuję masowo stworzyć dość sporo cech i przypisać je do towarów.
Sprawdziłem jakie Id ma ostatnia cecha i przetestowałem dodawanie cech w poniższy sposób na bazie testowej (poprzez zestawienie SQL):
SELECT 1
INSERT INTO sl_CechaTw (ctw_Id, ctw_Nazwa)
VALUES (10, 'testowaCecha')
Cecha została dodana poprawnie.
Sprawdziłem dodanie później nowej cechy w standardowy sposób i również dodała się poprawnie.
Sprawdziłem dodanie cechy poprzez zestawienie SQL dając ctw_Id odległe od rzeczywistego i wtedy dopiero dodanie jeszcze jednej cechy w standardowy sposób - efektem jest, że cecha dodana w standardowy sposób wpierw zapełni lukę w ID a jak dotrze do stworzonej przeze mnie to pominie ten numer i nada automatycznie kolejny

Z mojego punktu widzenia ten sposób działa i nie powoduje problemów, ale wolę spytać osoby bardziej doświadczone.
Czy jest sens robić to w ten sposób, czy jednak spowoduje to jakieś problemy, których nie widzę?

Z góry dziękuję za pomoc.

Offline candy

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4913
  • Reputacja +173/-11
Masowe tworzenie i przypisywanie cech
« Odpowiedź #1 dnia: Maj 23, 2022, 12:48:55 »
Nie, ten sposób nie jest poprawny.
W Subiekcie nie ma mechanizmu pozwalającego na "ominięcie" istniejącego identyfikatora, nie wiem skąd ten pomysł.
« Ostatnia zmiana: Maj 23, 2022, 12:51:11 wysłana przez candy »
Nie pytaj co rząd może zrobić dla Ciebie. Spytaj czy mógłby tego nie robić.

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17189
  • Reputacja +800/-27
  • Wersja programu: GT/Navireo/nexo
Odp: Masowe tworzenie i przypisywanie cech
« Odpowiedź #2 dnia: Maj 23, 2022, 12:50:33 »
Jak się zagląda do bazy danych to się nie "zgaduje" tylko "sprawdza" (pofiler), a takim doświadczeniem dzielimy się na forum od początku jego istnienia, warto wcześniej poczytać i skorzystać... Większość tabel nie ma klucza głównego opartego na identity tylko jest zarządzana przez program, który wykorzystuje dodatkową tabelę z licznikami, brak aktualizacji liczników prowadzi do błędów w działaniu programu... 
Daniel, Białystok.

Offline Lucus

  • Użytkownik
  • **
  • Wiadomości: 50
  • Reputacja +0/-0
  • Wersja programu: Subiekt Gt 1.70
Odp: Masowe tworzenie i przypisywanie cech
« Odpowiedź #3 dnia: Maj 23, 2022, 13:12:06 »
@candy
Cytuj
W Subiekcie nie ma mechanizmu pozwalającego na "ominięcie" istniejącego identyfikatora, nie wiem skąd ten pomysł.
Nie bardzo rozumiem o jakie "ominięcie" istniejącego identyfikatora chodzi.
Jeżeli o to, że program sam ominął istniejący i dodał kolejny to jest to fakt z testu, który zrobiłem, ale może źle się wysłowiłem.
Dla testu zrobiłem tak:
Istniejące identyfikatory cech:
1, 2, 3, 4, 5
Dodałem identyfikator cechę z identyfikatorem 7 przez zestawienie SQL, teraz istniejące wyświetla:
1, 2, 3, 4, 5, 7
Dodałem dwie cechy normalnie przez program. Istniejące identyfikatory:
1, 2, 3, 4, 5, 6, 7, 8
Z czego pod 6 i 8 przypisało te dodane przez program

Cytuj
Większość tabel nie ma klucza głównego opartego na identity tylko jest zarządzana przez program, który wykorzystuje dodatkową tabelę z licznikami, brak aktualizacji liczników prowadzi do błędów w działaniu programu...
Czyli np. "ctw_Id" nie jest identyfikatorem tabeli "sl_CechaTw"?
W sensie, że gdy dodajemy przez program kolejną cechę to jest tworzone ctw_Id, ctw_Nazwa, a oprócz tego jeszcze w innej tabeli kolejny rekord z jakimiś danymi?

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17189
  • Reputacja +800/-27
  • Wersja programu: GT/Navireo/nexo
Odp: Masowe tworzenie i przypisywanie cech
« Odpowiedź #4 dnia: Maj 23, 2022, 13:25:51 »
Czyli np. "ctw_Id" nie jest identyfikatorem tabeli "sl_CechaTw"?

Oczywiście, że jest identyfikatorem tabeli.


W sensie, że gdy dodajemy przez program kolejną cechę to jest tworzone ctw_Id, ctw_Nazwa, a oprócz tego jeszcze w innej tabeli kolejny rekord z jakimiś danymi?

Nie, jest jest tworzony nowy rekord tylko jak napisałem jest aktualizowany...

Doczytałeś czym jest "identity", przyjrzałeś się definicji kolumny "ctw_Id" ? Skąd taki opór, aby korzystać z sugestii:

...osoby bardziej doświadczone.
Daniel, Białystok.

Offline candy

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4913
  • Reputacja +173/-11
Odp: Masowe tworzenie i przypisywanie cech
« Odpowiedź #5 dnia: Maj 23, 2022, 13:28:49 »
@candy
Cytuj
W Subiekcie nie ma mechanizmu pozwalającego na "ominięcie" istniejącego identyfikatora, nie wiem skąd ten pomysł.
Nie bardzo rozumiem o jakie "ominięcie" istniejącego identyfikatora chodzi.
Jeżeli o to, że program sam ominął istniejący i dodał kolejny to jest to fakt z testu, który zrobiłem, ale może źle się wysłowiłem.
Dla testu zrobiłem tak:
Istniejące identyfikatory cech:
1, 2, 3, 4, 5
Dodałem identyfikator cechę z identyfikatorem 7 przez zestawienie SQL, teraz istniejące wyświetla:
1, 2, 3, 4, 5, 7
Dodałem dwie cechy normalnie przez program. Istniejące identyfikatory:
1, 2, 3, 4, 5, 6, 7, 8
Z czego pod 6 i 8 przypisało te dodane przez program
Właśnie to miałem na myśli pisząc o "ominięciu" (nadanie id = 6, a potem 8, bo 7 było zajęte).
Niestety, to tak nie działa, źle przeprowadziłeś eksperyment.
Musiałeś zrobić coś jeszcze, np kontrolę danych w programie serwisowym.
Gdybyś zrobił dokładnie to co napisałeś efekt byłby taki jak w załączniku

Czyli np. "ctw_Id" nie jest identyfikatorem tabeli "sl_CechaTw"?
W sensie, że gdy dodajemy przez program kolejną cechę to jest tworzone ctw_Id, ctw_Nazwa, a oprócz tego jeszcze w innej tabeli kolejny rekord z jakimiś danymi?
Jest identyfikatorem, ale nie jest to kolumna typu "autoincrement", więc samo się policzy.
Identyfikator nie jest również wyliczany dynamicznie, tylko służy do tego tabela identyfikatorów.
Polecam help -> opis struktury zbiorów danych -> wyszukaj -> "Identyfikatory"
Nie pytaj co rząd może zrobić dla Ciebie. Spytaj czy mógłby tego nie robić.

Offline Lucus

  • Użytkownik
  • **
  • Wiadomości: 50
  • Reputacja +0/-0
  • Wersja programu: Subiekt Gt 1.70
Odp: Masowe tworzenie i przypisywanie cech
« Odpowiedź #6 dnia: Maj 23, 2022, 14:00:48 »
@candy

Aż poszedłem zrobić jeszcze raz ten test i faktycznie jest jak piszesz. Musiałem wtedy strasznie szybko dwuklik zrobić i nawet okienka nie zauważyłem.
Co ciekawe jednak mogę wtedy dwukrotnie kliknąć ok i zignorować błąd - wtedy mi dodaje już cechy w brakujące miejsca. Jak dodam 2 cechy przez zestawienie to później 2 razy musze zignorować błąd i trzeci raz idzie już normalnie.

Oczywiście jednak nie jest to rozwiązanie.
Cytuj
Jest identyfikatorem, ale nie jest to kolumna typu "autoincrement", więc samo się policzy.
Jestem tego świadom, dlatego sprawdzałem jaki jest ostatni numer i przydzielałem ręcznie odpowiednią wartość.

Sprawdziłem tabelę "Identyfikatory".
Czy dobrze rozumiem, że zaktualizowanie wartości "id_wartosc" do odpowiedniej wartości (o tyle ile dodanych zostało id) dla "ido_nazwa" = sl_CechaTw rozwiązuje powyższy problem?

Offline Lucus

  • Użytkownik
  • **
  • Wiadomości: 50
  • Reputacja +0/-0
  • Wersja programu: Subiekt Gt 1.70
Odp: Masowe tworzenie i przypisywanie cech
« Odpowiedź #7 dnia: Maj 23, 2022, 14:45:36 »
Próbowałem sprawdzić profilerem z jakich tabel subiekt korzysta przy tworzeniu cech, ale chyba nie umiem z niego poprawnie korzystać. Widzę tam tabelę z cechami i właściwościami cech, ale nie widzę nigdzie tej z identyfikatorami.

Dodałem kilka cech poprzez zestawienie SQL, a następnie poprzez zestawienie zaktualizowałem wartosc "ido_wartosc".
Po dodaniu później cech ręcznie program nadaje im prawidłowe kolejne id, nie wyskakuje błąd oraz program aktualizuje później poprawnie dalej wartosc "ido_wartosc".
Czy w takim razie w ten sposób jest wszystko ok? Wystarczy w takim wypadku pamiętać o zaktualizowaniu ido_wartosc dla tabeli, w której się wprowadzało zmiany?

Offline candy

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4913
  • Reputacja +173/-11
Odp: Masowe tworzenie i przypisywanie cech
« Odpowiedź #8 dnia: Maj 23, 2022, 15:10:56 »
Jeśli nikt w tym samym czasie nie będzie dodawał cech do bazy to wystarczy.
Nie pytaj co rząd może zrobić dla Ciebie. Spytaj czy mógłby tego nie robić.

Offline Lucus

  • Użytkownik
  • **
  • Wiadomości: 50
  • Reputacja +0/-0
  • Wersja programu: Subiekt Gt 1.70
Odp: Masowe tworzenie i przypisywanie cech
« Odpowiedź #9 dnia: Maj 23, 2022, 16:01:18 »
Cytuj
Nie, jest jest tworzony nowy rekord tylko jak napisałem jest aktualizowany...

Doczytałeś czym jest "identity", przyjrzałeś się definicji kolumny "ctw_Id" ? Skąd taki opór, aby korzystać z sugestii:

...osoby bardziej doświadczone.

Nie rzecz w tym, że jest opór, tylko w tym, że dla osób które dopiero poznają pewne rzeczy nie jest to takie oczywiste jak wam bardziej doświadczonym się wydaje.
Z tego też powodu sama definicja z pomocy o "ctw_Id" za wiele sama w sobie nie mówi:
Cytuj
Klucz główny
To, że ctw_Id automatycznie się nie zwiększa, tylko muszę ręcznie wpisać właściwy domyśliłem się po testach.
Myślałem jednak, że w jakiś sposób program sobie odczytuje ostanie Id w tabelii i automatycznie dodaje numer wyższy gdy dodajemy np. cechę ręcznie przez program.
Finalnie jednak okazało się, że dane licznika są w innej tabeli - i to jest w sumie informacja, której szukałem.

@dkozlowski
Dziękuję bardzo za pomoc, ale pamiętajcie, że dla osób takich jak ja - nowych - niektóre rzeczy o jakich piszecie nie są tak oczywiste jak dla was i dopiero zaczynają rozumieć dochodząc do tego naookoło.
Oczywiście mogą się douczać w innych miejscach, ale wpierw muszą wiedzieć czego w ogóle szukać.

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17189
  • Reputacja +800/-27
  • Wersja programu: GT/Navireo/nexo
Odp: Masowe tworzenie i przypisywanie cech
« Odpowiedź #10 dnia: Maj 23, 2022, 17:29:52 »
Jakiego niby doświadczenia wymaga zapoznanie się z informacjami zgromadzonymi na forum, gdzie takie pytania powtarzają się regularnie od lat ?
Daniel, Białystok.

Offline Lucus

  • Użytkownik
  • **
  • Wiadomości: 50
  • Reputacja +0/-0
  • Wersja programu: Subiekt Gt 1.70
Odp: Masowe tworzenie i przypisywanie cech
« Odpowiedź #11 dnia: Maj 24, 2022, 09:19:12 »
@dkozlowski
Wdaję się trochę już w niepotrzebną dyskusję ale..
Być może pytania takie powtarzają się regularnie od lat, ale mimo to znalazłem tylko jeden podobny wątek przez forumową wyszukiwarkę i nie dostarczył mi on potrzebnych informacji.

I jak pisałem wcześniej. Dla osób obeznanych w temacie zapewne łatwo jest znaleźć informacje i wiedzą jakich fraz użyć, żeby je znaleźć lub gdzie później szukać potrzebnych itp.
Nie ma potrzeby być w stosunku do takich osób opryskliwym i irytować się ich pytaniami choć zdaję sobie sprawę, że właśnie dla osób doświadczonych mogą one być po prostu "głupie" - ale każdy kiedyś zaczynał.
Nie oczekuję również podania rozwiązań na tacy itp, ale wskazania choćby miejsc gdzie się wczytać i czego szukać (jak choćby zrobił to @candy).
Również zdaję sobie sprawę ze swojej małej wiedzy na ten temat więc wiem, że czasami może mi się wydawać, że coś powinno działać, ale w rzeczywistości działa to inaczej i potrzebuję się upewnić u osób mądrzejszych ode mnie.

Także nie obraź się @dkozlowski bo robisz super robotę na forum i wiele z twoich odpowiedzi w różnych wątkach bardzo dużo mi pomogło, ale każdy kto już ogarnia kiedyś był takim irytującym poczatkującym.

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17189
  • Reputacja +800/-27
  • Wersja programu: GT/Navireo/nexo
Odp: Masowe tworzenie i przypisywanie cech
« Odpowiedź #12 dnia: Maj 24, 2022, 11:07:35 »
Niestety ciągle nie słuchasz... Większość (a nie jeden) wątków (w tym dziale) sprowadza się do tego samego, tego o czym napisałem w pierwszej odpowiedzi - należy / wystarczy dowiedzieć się jak działa program, w tym oczywiście serwer SQL Microsoftu, który jest przez niego wykorzystywany, gdyż z taką wiedzą nie tylko będziesz potrafił dodać cechę, ale również poradzisz sobie z innymi potrzebami, w tym również ze wszystkimi innymi serwerami SQL i programami (w analogicznej technologii)...  Forum (ten dział) można (warto) było przeczytać od deski do deski, zamiast tylko wyszukiwać... Oczywiście to wymaga chęci i czasu, więc powinieneś się zdecydować, czy chcesz go inwestować i z tego żyć, czy jednak zlecić to komuś innemu. Nie raz deklarowałem, że pomogę każdego, kto chce się uczyć, ale przez tyle lat nikt jeszcze nie był zainteresowany.
Daniel, Białystok.

Forum Użytkownikow Subiekt GT

Odp: Masowe tworzenie i przypisywanie cech
« Odpowiedź #12 dnia: Maj 24, 2022, 11:07:35 »