Forum Użytkownikow Subiekt GT
InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: tyska w Lipiec 09, 2012, 16:58:19
-
witam,
mam mały problem ze skryptem sfery.
tworzę obecnie nową bazę zarówno towarów, jak i kontrahentów i by ułatwić sobie sprawę korzystam ze sfery, jednak mam mały problem by dodać pełną listę informacji o kontrahentach - wszystko wchodzi z tabeli w excelu prócz tel ;-((
jaki kod trzeba wpisać, by telefony załadowały się wraz z resztą danych?
oKh.Telefony.i co dalej? = cells (row, 2)
podobny problem mam ze zdjęciami produktów - też się ie chcą załadować ;-((
otw.zdjecia.element(1) = cells (row,3)
z góry dzięki za pomoc
-
Polecam poczytać dokumentację do Sfery:
Sfera - InsERT GT dla aplikacji 1.0
Metoda Dodaj
Dodaje nowy obiekt typu KhTelefon (telefon kontrahenta).
Składnia
wyrazenie.Dodaj(val)
wyrazenie
Wymagane wyrażenie, które zwraca kolekcja KhTelefony
Parametry
val
variant. Nazwa nowododawanego telefonu.
Uwagi
Przykład
Przykład pokazuje dodanie telefonu do istniejącego kontrahenta o zadanym symbolu.
Sub DodajTelefon()
On Error GoTo ErrHandler
Dim oSgt As Insert.Subiekt
Dim oKh As Insert.Kontrahent
Dim oKhTel As Insert.KhTelefon
Dim sym As String
Dim nazwa As String
Dim numer As String
Dim strTel As String
Dim strRodzaj As String
Dim CzyIstnieje As Boolean
Dim Rodzaj As Boolean
'Wczytanie symbolu kontrahenta, który ma być wyświetlony
sym = InputBox("Podaj symbol kontrahenta", "Kontrahent")
If sym = "" Then
MsgBox "Należy wybrać kontrahenta.", vbCritical
Exit Sub
End If
'Uruchomienie Subiekta GT
Set oSgt = UruchomSubiekta()
'Sprawdzenie czy istnieje kontrahent
CzyIstnieje = oSgt.Kontrahenci.Istnieje(sym)
If CzyIstnieje = False Then
oSgt.Okno.Widoczne = False
MsgBox "Kontrahent o podanym symbolu nie istnieje"
Exit Sub
Else
'Wczytanie kontrahenta do kolekcji
Set oKh = oSgt.Kontrahenci.Wczytaj(sym)
'Ukrycie okna Subiekta GT
oSgt.Okno.Widoczne = False
strTel = InputBox("Podaj nazwę telefonu:", "Nazwa nowego telefonu")
'Dodanie obiektu telefonu kontrahenta
Set oKhTel = oKh.Telefony.Dodaj(strTel)
'Wypełnienie danymi pozostałych parametrów telefonu
oKhTel.numer = InputBox("Podaj numer telefonu", "Numer nowego telefonu")
oKhTel.Typ = gtaTelefonTypSluzbowy
oKhTel.Podstawowy = True
strRodzaj = MsgBox("Numer ma być telefonem (Tak) czy faksem (Nie)?", vbYesNo)
If strRodzaj = vbYes Then
oKhTel.Rodzaj = False
Else
oKhTel.Rodzaj = True
End If
'Zapisanie obiektu kontrahenta do bazy danych
oKh.Zapisz
oKh.Wyswietl
'Zamknięcie obiektu kontrahenta
oKh.Zamknij
End If
Exit Sub
ErrHandler:
MsgBox "Wystąpił błąd: " & Err.Number & " - " & Err.Description
End Sub
-
hej,
dzięki za odp.
oczywiście taką metodę przerobiłam i owszem działa, ale w niej muszę mieć osobny dokument i w wyskakujące okienka wpisywać nr tel., nazwę, czy fax...
a ja mam już gotowy plik w excelu z kolumnami zawierającymi wszystkie potrzebne mi dane. Wszystko prócz nr tel. się z tego pliku ładuje w parę sekund.
z pewnością tel. też by się ładował, ale w kodzie sfera potrzebuje więcej informacji odnośnie czy to służbowy, jaka nazwa, czy podstawowy, czy fax - a ja tej kombinacji kodu nie znam ;-((
-
To jest właśnie przykład, a nie program przygotowany pod twoje potrzeby. To trochę tak jak byś zrobił prawo jazdy na Nissanie Micra i potem powiedział, że Skodą Octawią nie pojedziesz bo to inny samochód. Jeśli nie radzisz sobie z takimi podstawowymi operacjami, to zleć to komuś innemu, bo pomoc sprowadzać się będzie do pisania kodu Ciebie.
Nie ma potrzeby używać wyskakujących okienek, wszystkie dane niezbędne do wprowadzenia numeru których nie masz w Excelu możesz przecież zastąpić stałymi - pusta nazwa, typ "służbowy", jak masz jeden telefon to zawsze będzie podstawowy, zawsze telefon.
To chyba mój pierwszy kod w vb w życiu:
'Wczytanie kontrahenta do kolekcji
Set oKh = oSgt.Kontrahenci.Wczytaj(sym)
'Ukrycie okna Subiekta GT
oSgt.Okno.Widoczne = False
'Dodanie obiektu telefonu kontrahenta
Set oKhTel = oKh.Telefony.Dodaj("")
'Wypełnienie danymi pozostałych parametrów telefonu
oKhTel.numer = cells (row, 2)
oKhTel.Typ = gtaTelefonTypSluzbowy
oKhTel.Podstawowy = True
oKhTel.Rodzaj = False
'Zapisanie obiektu kontrahenta do bazy danych
oKh.Zapisz
oKh.Wyswietl
--
Ze zdjęciami i wszystkimi kolekcjami podobnie - najpierw muszi dodać obiekt do kolekcji, a potem uzupełnić jego dane.
--
Proszę jeszcze zajrzeć do pliku "ImportPotencjalnychKlientow.xls" w dołączonych do programu przykładach (InsERT\Przykłady).
-
witam,
raz jeszcze dzięki za odpowiedź - niestety podane kombinacje przez Ciebie nie skutkują.
ale już znalazłam wymyśliłam kod pasujący idealne do mojego schematu:
gdyby ktoś kiedyś szukał:
oKh.Telefony.Dodaj(strTel).Numer = Cells(row, 1)
pozdrawiam
-
Jeśli coś Ci nie działa to przynajmniej napisz co się dzieje - czy pojawia się jakiś błąd, brak jest oczekiwanego efektu, itp - i zamieść kod który to realizuje. Wrzuciłem zaproponowany przeze mnie kod do przykładu i wszystko działa jak należy - plik w załączniku. Czy w moim kodzie zmieniłaś kolumnę komórki z 2 na 1 bo raz piszesz tak, a raz inaczej ?
Za to w Twoim kodzie co jest zapisywane do zmiennej "strTel", gdzie jest jej inicjalizacja ?
-
Witam
Mam podobny problem tylko że po wykonaniu poniższego kodu dostaję błąd w momencie zapisu Błąd zapisu do bazy danych. Zapis spowodowałby naruszenie integralności danych.
Więcej informacji na ten temat w pomocy, w rozdziale "Problemy techniczne".
Wiecie co może być przyczyną?
var kontr = (Kontrahent) _sgt.Kontrahenci.Wczytaj(ktr.kh_Id);
if (tel != null)
{
var tele = (KhTelefon)kontr.Telefony.Dodaj("");
tele.Nazwa = tel.tel_Nazwa.Trim();
tele.Numer = tel.tel_Numer.Trim();
tele.Podstawowy = tel.tel_Podstawowy;
tele.Rodzaj = tel.tel_Rodzaj;
tele.Typ = TelefonTypEnum.gtaTelefonTypKomorkowy;
}
kontr.Zapisz();
-
Zapewne zapisujesz dane, których nie przyjmuje baza danych, niestety nie raczyłeś napisać jakie wartości zawierają zmienne.
-
var tele = (KhTelefon)kontr.Telefony.Dodaj("");
tele.Nazwa = tel.tel_Nazwa.Trim(); //string
tele.Numer = tel.tel_Numer.Trim(); //string
tele.Podstawowy = tel.tel_Podstawowy; //bool
tele.Rodzaj = tel.tel_Rodzaj; // tutaj jest int=1 próbowałem tutaj też bool=true ale jest to samo
tel jest obiektem z drugiej bazy Subiekta zbudowanym na podstawie tabeli tel__Ewid
-
A numer telefonu coś zawiera?