mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
import kontrahentow - problem z rodzajem https://forum.mix-soft.pl/viewtopic.php?f=15&t=1571 |
Strona 1 z 1 |
Autor: | JacekBomba [ 2010-01-07, 12:55 ] |
Tytuł: | import kontrahentow - problem z rodzajem |
Witam. Probuje zaimportowac kontrahenta przy pomocy ponizszego kodu: Kod: //================================================================================ // Import kontrahenta. //================================================================================ int Sub CustomerImport() Clear(basKH) string naglowek = readColumn() string kod = readColumn() string nazwa = readColumn() string miasto = readColumn() string ulica = readColumn() string numerDomu = readColumn() string numerLokalu = readColumn() string kodPocztowy = readColumn() string nip = readColumn() string telefon = readColumn() string typPlatnosciId = readColumn() string rabat = readColumn() string czyBrutto = readColumn() string cennikId = readColumn() string negocjacjaCen = readColumn() string terminPlatnosci = readColumn() string rodzajId = readColumn() SetField (basKH, "typ", "0") SetField (basKH, "typi", 0) SetField (basKH, "subtypi", 0) SetField (basKH, "kod", kod) SetField (basKH, "nazwa", nazwa) SetField (basKH, "miejscowosc", miasto) SetField (basKH, "ulica", ulica) SetField (basKH, "dom", numerDomu) SetField (basKH, "lokal",numerLokalu) SetField (basKH, "kodpocz", kodPocztowy) SetField (basKH, "nip", nip) SetField (basKH, "tel1", telefon) if typPlatnosciId != "" then SetField (basKH, "formaplatn", Val(typPlatnosciId)) endif SetField (basKH, "upust", Val(rabat)) int grupaceni = 0 if czyBrutto == "1" then grupaceni = grupaceni + 1 endif select case (cennikId) case "65": grupaceni = grupaceni + 2 // A case "66": grupaceni = grupaceni + 4 // B case "67": grupaceni = grupaceni + 6 // C case "68": grupaceni = grupaceni + 8 // D endselect SetField (basKH, "grupaceni", grupaceni) if negocjacjaCen = "0" then SetField (basKH, "negoc", "T") else SetField (basKH, "negoc", "N") endif if rodzajId == "" then SetField (basKH, "rodzaj", 3100) else SetField (basKH, "rodzaj", Val(rodzajId)) endif SetField (basKH, "idkraju", 5801) SetField (basKH, "katalog", 2100) if InsRec(basKH) != 0 then ShowMsgError() baseError (basKH, 2) Error "" endif EndSub Mam problem z przypisaniem rodzaju kontrahenta oraz typu platnosci. Jesli przypisze rodzaj (id = 438 tak jak dla istniejacych w bazie kontrahentow, ktorych wczesniej sobie wyeksportowalem) to powstaje ponizszy blad: 1. W podgladzie kontrahenta nie pojawia sie zaden rodzaj 2. Nie moge przypisac kontrahentowi jakiegokolwiek rodzaju (pojawia sie komunikat 'Nieznany katalog lub rodzaj') 3. Nie moge usunac takiego kontrahenta (pojawia sie nieudokumentowany blad obslugi bazy -4101) W przypadku platnosci, nie pojawia sie przypisana forma platnosci. Gdzie tkwi blad? Pozdrawiam, Jacek Frieske |
Autor: | JacekBomba [ 2010-01-07, 15:36 ] |
Tytuł: | |
Problem pojawia sie podczas importu wartosci slownikowych zdefiniowanych w tabeli XT. Z tabeli odczytalem sobie wartosc id katalogu o nazwie DOSTAWCY = 116. Zaimportowalem kontrahenta zgodnie z powyzszym kodem podajac jako id katalogu wartosc 116 Kod: SetField (basKH, "katalog", 116) Po imporcie kontrahenta w polu katalog istnieje wartosc 51BM.DAT Przeanalizowalem zawartosc tabeli XT i widze, ze sa dwa pola o identyfikatorze 116 (DOSTAWCY oraz 51BM.DAT) W dokumentacji jest napisane, ze pole id jest polem unikalnym (autoincrement). Czy u was tez istnieje taka niespojnosc? Jak obejsc problem importu kontrahenta i przypisania mu wartosci slownikowych (typ platnosci, rodzaj, katalog)? |
Autor: | rafal [ 2010-01-07, 16:13 ] |
Tytuł: | |
Katalogi dodane przez użytkownika w programie nie będą miały mniejszego ID niż 65000. Tak więc nie wiem skąd u Ciebie ID jest równe 116. |
Autor: | wrob [ 2010-01-07, 16:15 ] |
Tytuł: | |
dokladniej 2^16 czyli >65536 |
Autor: | JacekBomba [ 2010-01-07, 16:58 ] |
Tytuł: | |
Rozwiazanie jest banalne, ale bez pomocy bym nigdy tego nie znalazl. Podczas eksportu tabeli xt w konwersji z liczby na stringa rzutowalem long'a na int'a i stad wziely sie problemy z wartosciami identyfikatorow. Dzieki za pomoc, pozdrawiam Jacek |
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |