mojaSymfonia FORUM
https://forum.mix-soft.pl/

InfoDok - error: nie można dodać zduplikowanego klucza do FK
https://forum.mix-soft.pl/viewtopic.php?f=15&t=6851
Strona 1 z 1

Autor:  WojtekM [ 2015-09-28, 09:18 ]
Tytuł:  InfoDok - error: nie można dodać zduplikowanego klucza do FK

Witam ponownie,
mam ogromną prośbę o pomoc:

Próbuję dodać dokument w Symfonii Forte za pomocą obiektu InfoDok w następujący sposób (próbowałem wielu przeróbek):

Kod:
#include "fkutil.sci"
#include "dbnames.sci"

InfoDok dok

dok.bZap = DbOpenRok("zapisy", indeksRoku(), true) //FN_BUF_DOK, dbOpenZapBase(indeksRoku(), ZRODLO_BUFOR, true)
dok.bDok = DbOpenRok("dokumenty", indeksRoku(), true) //FN_BUF_UDOK dbOpenDokBase(indeksRoku(), ZRODLO_BUFOR, true )
dok.bKsie = DbOpenRok("dokumenty", indeksRoku(), true) //"dok.InsRec()" / FN_BUF_UDOK dbOpenDokBase( indeksRoku(), ZRODLO_BUFOR, true )   //DbOpenRok("buf_dokum", a_rok, true)   //dbOpenDokBase( indeksRoku(), ZRODLO_KSIEGI, true )

dok.begin(1)
dok.SetField(0, "skrot", "WB")
dok.SetField(0, "nazwa", "DP/2015/08")
dok.SetField(0, "tresc", "Treść dokumentu")
dok.SetField(0, "datawpr", "2015-08-11")
dok.SetField(0, "datadok", "2015-08-11")
dok.SetField(0, "dataOper", "2015-08-11")
dok.Insert(1)
dok.next(1)

dok.SetField(1, "opis", "bla bla")
dok.SetField(1, "kwota", 1002)
dok.SetField(1, "strona", 0)
dok.SetField(1, "synt", 100)
dok.SetField(1, "pozycja", 0)
dok.Insert(1)
dok.next(1)

dok.SetField(1, "opis", "xxx")
dok.SetField(1, "kwota", 1002)
dok.SetField(1, "strona", 1)
dok.SetField(1, "synt", 200)
dok.SetField(1, "pozycja", 0)
dok.Insert(1)
dok.next(1)

//---------------------

dok.SetField(1, "kwota", 1001)
dok.SetField(1, "strona", 0)
dok.SetField(1, "synt", 100)
dok.SetField(1, "pozycja", 1)
dok.Insert(1)
dok.next(1)

dok.SetField(1, "kwota", 1001)
dok.SetField(1, "strona", 1)
dok.SetField(1, "synt", 200)
dok.SetField(1, "pozycja", 1)
dok.Insert(1)

dok.InsRec()

//ZAMYKAMY DB
DbClose(dok.bZap)
DbClose(dok.bDok)
DbClose(dok.bKsie)


Niestety wywala mi błąd jak ten w załączeniu tj. że coś jest z wywołaniem funkcji "dok.InsRec()".

Próbowałem zamiast nazw tabel zapisów i dokumentów wstawić "buf_zapisy" i "buf_dokum", ale to z kolei powoduje błąd po stronie bazy danych (coś z duplikowaniem klucza)...

Bardzo proszę o wskazanie błędu - za co z góry dziękuję.

Załączniki:
error.png
error.png [ 10.03 KiB | Przeglądany 2949 razy ]

Autor:  WojtekM [ 2015-09-28, 11:15 ]
Tytuł:  Re: InfoDok - error

I jeszcze taka drobna uwaga: prawdopodobnie błąd leży przy przypisywaniu wartości do zmiennej bDok, bo zgodnie z dokumentacją obiekt powinien wskazywać na otwartą bazę w buforze. Próbowałem to zrobić przez funkcję dbOpenDokBase(indeksRoku(), ZRODLO_BUFOR, true ), ale nie pomaga... Więc pytanie jak otworzyć bazę danych w buforze? :-/

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/