Forum Użytkownikow Subiekt GT
InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: astralom w Maj 16, 2017, 16:13:51
-
Witajcie.
Przymierzam się do zrobienia pliku xlsm z prostą tabelą SYMBOL KONTRAHENTA, NAZWA GRUPY TOWAROWEJ i RABAT w celu zautomatyzowania dodawania/aktualizowania Promocji w Subiekcie (większość naszych klientów ma poza rabatem podstawowym rabaty indywidualne na każdą grupę towarową). Problematyczne jest klikanie na juz utworzoną promocję (lub tworzenie nowej) i modyfikowanie jej zawartości o nowego kontrahenta dlatego chciałem trochę zautomatyzować i przyspieszyć te czynności.
Ale juz na początku tworzenia VBS'a napotkałem problem bo w referencjach nie mogę odnaleźć (albo po prostu nie mogę się zorientować który to) obiektu odpowiedzialnego za utworzenie/modyfikację Promocji. No chyba ze w ogóle nie jest mozliwe utworzenie formularza z takimi funkcjonalnościami jakimi chcę.
Ktoś może mi pomóc?
-
@pir
Profiler zwrócił mi taką wartość
exec sp_executesql N'INSERT INTO "ASTRA".."dok_PromocjaKontrahent" ("pck_Id","pck_IdPromocja","pck_IdKontrahent") VALUES (@P1,@P2,@P3); INSERT INTO "ASTRA".."dok_PromocjaKontrahent" ("pck_Id","pck_IdPromocja","pck_IdKontrahent") VALUES (@P4,@P5,@P6); INSERT INTO "ASTRA".."dok_PromocjaKontrahent" ("pck_Id","pck_IdPromocja","pck_IdKontrahent") VALUES (@P7,@P8,@P9); INSERT INTO "ASTRA".."dok_PromocjaKontrahent" ("pck_Id","pck_IdPromocja","pck_IdKontrahent") VALUES (@P10,@P11,@P12); INSERT INTO "ASTRA".."dok_PromocjaKontrahent" ("pck_Id","pck_IdPromocja","pck_IdKontrahent") VALUES (@P13,@P14,@P15); INSERT INTO "ASTRA".."dok_PromocjaKontrahent" ("pck_Id","pck_IdPromocja","pck_IdKontrahent") VALUES (@P16,@P17,@P18); INSERT INTO "ASTRA".."dok_PromocjaKontrahent" ("pck_Id","pck_IdPromocja","pck_IdKontrahent") VALUES (@P19,@P20,@P21); INSERT INTO "ASTRA".."dok_PromocjaKontrahent" ("pck_Id","pck_IdPromocja","pck_IdKontrahent") VALUES (@P22,@P23,@P24); INSERT INTO "ASTRA".."dok_PromocjaKontrahent" ("pck_Id","pck_IdPromocja","pck_IdKontrahent") VALUES (@P25,@P26,@P27); INSERT INTO "ASTRA".."dok_PromocjaKontrahent" ("pck_Id","pck_IdPromocja","pck_IdKontrahent") VALUES (@P28,@P29,@P30); INSERT INTO "ASTRA".."dok_PromocjaKontrahent" ("pck_Id","pck_IdPromocja","pck_IdKontrahent") VALUES (@P31,@P32,@P33); INSERT INTO "ASTRA".."dok_PromocjaKontrahent" ("pck_Id","pck_IdPromocja","pck_IdKontrahent") VALUES (@P34,@P35,@P36); INSERT INTO "ASTRA".."dok_PromocjaKontrahent" ("pck_Id","pck_IdPromocja","pck_IdKontrahent") VALUES (@P37,@P38,@P39); INSERT INTO "ASTRA".."dok_PromocjaKontrahent" ("pck_Id","pck_IdPromocja","pck_IdKontrahent") VALUES (@P40,@P41,@P42); INSERT INTO "ASTRA".."dok_PromocjaKontrahent" ("pck_Id","pck_IdPromocja","pck_IdKontrahent") VALUES (@P43,@P44,@P45)',N'@P1 int,@P2 int,@P3 int,@P4 int,@P5 int,@P6 int,@P7 int,@P8 int,@P9 int,@P10 int,@P11 int,@P12 int,@P13 int,@P14 int,@P15 int,@P16 int,@P17 int,@P18 int,@P19 int,@P20 int,@P21 int,@P22 int,@P23 int,@P24 int,@P25 int,@P26 int,@P27 int,@P28 int,@P29 int,@P30 int,@P31 int,@P32 int,@P33 int,@P34 int,@P35 int,@P36 int,@P37 int,@P38 int,@P39 int,@P40 int,@P41 int,@P42 int,@P43 int,@P44 int,@P45 int',428277,588,272,428278,588,382,428279,588,419,428280,588,422,428281,588,449,428282,588,875,428283,588,964,428284,588,971,428285,588,1017,428286,588,1228,428287,588,1231,428288,588,1293,428289,588,1323,428290,588,1475,428291,588,1485
-
Nie doczytałem, że chcesz używać sfery. Moja podpowiedź tyczyła się bezpośredniego dostępu do bazy danych. Lepiej poczekaj na kogoś z większą wiedzą na temat sfery.
-
Spoko. Dzięki za info.
Jednocześnie proszę admina o przeniesienie do działu Dodatki - zestawienia - sfera bo chyba bardziej tu powinien znajdować się wątek.
-
Promocje nie są obsługiwane przez Sferę, pozostaje bezpośredni dostęp do bazy danych.
Ale juz na początku tworzenia VBS'a napotkałem problem bo w referencjach nie mogę odnaleźć (albo po prostu nie mogę się zorientować który to) obiektu odpowiedzialnego za utworzenie/modyfikację Promocji.
Na przyszłość szukaj takich informacji w pomocy do Sfery.
-
Faktycznie mogłem sprawdzić. Dzięki.
-
Faktycznie mogłem sprawdzić. Dzięki.
Zwróć uwagę na model obiektowy, szybko można sprawdzić jakie obiekty są obsługiwane przez Sferę.
-
No właśnie zerknąłem i znalazłem inną rzecz, która mnie zainteresowała.
-
A mnie zainteresowało to, co Ciebie zainteresowało ;)
-
Przypisywanie wartości pól własnych do towarów. Dopiero zaczynam ogarnianie tematu i przypominanie sobie składni języków programowania. Znalazłem przykładowe rozwiązanie wpisywania wartości do pola w Pomocy do Sfery i przykłady z płyty ale muszę posiedzieć na testowej bazie z wrzuceniem tego w jeden formularz tak, żeby po wrzuceniu listy towarów (wystarczą kolumny SYMBOL, NAZWA, WARTOŚĆ POLA) i po kliknięciu na przycisk skrypt po odczytaniu symbolu towaru wpisał wartość z kolumny WARTOŚĆ do pola własnego.
Znalazłem na płycie przykład dodawania Kontrahenta z poziomu Excela
Dim oSubiekt As InsERT.Subiekt
Private Sub DodajKh_Click()
' Podłączenie Subiekta GT
Dim oGT As New InsERT.gt
oGT.Produkt = InsERT.gtaProduktSubiekt
oGT.Wczytaj ("C:\Program Files\InsERT\InsERT GT\Subiekt.xml")
Set oSubiekt = oGT.Uruchom(InsERT.gtaUruchomDopasuj, InsERT.gtaUruchom)
' Dodawanie kontrahentow
Dim oKh As InsERT.Kontrahent
Dim row As Integer ' Wiersz wstawianych danych
Dim Dodane As Integer
Dim Opuszczone As Integer
row = 5 ' Numer pierwszego wiersza z danymi
Dodane = 0 ' Liczba dodanych kontrahentów
Opuszczone = 0 ' Liczba opuszczonych kontrahentów
On Error Resume Next
While Cells(row, 1).Text <> ""
Set oKh = Nothing
Set oKh = oSubiekt.Kontrahenci.Wczytaj(Cells(row, 3))
If oKh Is Nothing Then
' Nie ma kontrahenta o podanym symbolu
Set oKh = oSubiekt.Kontrahenci.Dodaj(0)
oKh.Symbol = Cells(row, 1)
oKh.Nazwa = Cells(row, 2)
oKh.NIP = Cells(row, 3)
oKh.Ulica = Cells(row, 4)
oKh.NrDomu = Cells(row, 5)
oKh.NrLokalu = Cells(row, 6)
oKh.Miejscowosc = Cells(row, 7)
oKh.KodPocztowy = Cells(row, 8)
oKh.WWW = Cells(row, 9)
oKh.Zapisz
Cells(row, 10) = ""
Dodane = Dodane + 1
Else
' W Subiekcie GT jest już kontrahent o podanym symbolu
Cells(row, 10) = "Już istnieje"
Opuszczone = Opuszczone + 1
End If
row = row + 1
Wend
MsgBox "Gotowe. Dodano" + Str(Dodane) + " kontrahentów, a opuszczono" + Str(Opuszczone) + "."
End Sub
Private Sub EdytujKh_Click()
If oSubiekt Is Nothing Then
MsgBox "Brak połączenia z Subiektem GT"
Exit Sub
End If
Dim oKh As InsERT.Kontrahent
On Error GoTo Error_BrakKontrahenta
Set oKh = oSubiekt.Kontrahenci.Wczytaj(CStr(Cells(ActiveCell.row, 1)))
oKh.Wyswietl
Exit Sub
Error_BrakKontrahenta:
MsgBox "Należy wybrać wiersz z symbolem kontrahenta do edycji." + Cells(ActiveCell.row, 1)
End Sub
Ale ze moja wiedza wymaga aktualizacji to muszę wykombinować jak zamienić linijki z kontrahentami do efektu z tego przykładu:
Sub Towar_PoleWlasne()
On Error GoTo ErrHandler
Dim oSubGT As InsERT.Subiekt
Dim oTw As InsERT.Towar
Set oSubGT = UruchomSubiekta()
Set oTw = oSubGT.TowaryManager.Wczytaj(12)
oTw.PoleWlasne("Zapach") = "Fiołkowy"
oTw.Zapisz
oTw.Wyswietl
oTw.Zamknij
Exit Sub
ErrHandler:
MsgBox Err.Number & " - " & Err.Description
End Sub
-
Może nie rozumiem co chcesz zmienić, ale w helpie jest analogiczny przykład dla pól własnych kontrahenta.
-
To może jeszcze raz:
mój formularz ma zawierać 3 kolumny: SYMBOL, NAZWA TOWARU, WARTOŚĆ POLA. Czyli jak dobrze kojarzę do kolumn muszą być dopisane:
SYMBOL - tw.Symbol
NAZWA - nic, bo to jest potrzebne tylko do kontroli rodzaju towaru przeze mnie
WARTOŚĆ POLA - wartość stąd musi być wpisywana do oTw.PoleWlasne("QSHOP").
Sam przykład
Sub Towar_PoleWlasne()
On Error GoTo ErrHandler
Dim oSubGT As InsERT.Subiekt
Dim oTw As InsERT.Towar
Set oSubGT = UruchomSubiekta()
Set oTw = oSubGT.TowaryManager.Wczytaj(12)
oTw.PoleWlasne("Zapach") = "Fiołkowy"
oTw.Zapisz
oTw.Wyswietl
oTw.Zamknij
Exit Sub
ErrHandler:
MsgBox Err.Number & " - " & Err.Description
End Sub
jest dobry, ale nie wiem jak go zmodyfikować tak, żeby pobierał symbol z kolumny SYMBOL (na przykład A) i wpisywał do otw.PoleWlasne("QSHOP") wartość z kolumny WARTOŚĆ POLA (na przykład C).
-
Leniuszek!
Pierwsza pozycja od góry: http://bfy.tw/BrQW
-
Dzięki!