mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
Księgi czy bufor, jak rozpoznać https://forum.mix-soft.pl/viewtopic.php?f=15&t=5232 |
Strona 1 z 1 |
Autor: | qres [ 2013-10-20, 11:07 ] |
Tytuł: | Księgi czy bufor, jak rozpoznać |
FiK 2013 Witam ponownie ja dalej z uporem maniaka :) Jesteśmy na Liście Dokumentów, mamy id dokumentu wybranego "prawoklikiem" (Arg0) i jeśli chcemy korzystać z danych zawartych w bazie a nie z "grid'a", pojawia się problem, jak nasz raport ma rozpoznać czy to lista z bufora czy z ksiąg ? Radzę sobie następującym kodem, opracowanym na podstawie raportów zawartych w FiK oraz informacji zgromadzonych na tym forum : Kod: #include "dbutil.sci" #include "wrap.sci" string skZlisty long idZlisty,nrZlisty, ZrodloDb int errDok(2),errDo #define XROWSDATA userObject idZlisty = XROWSDATA.item( 1 ).id nrZlisty = val(Mid(XROWSDATA.item( 1 ).numer ,5)) skZlisty = Mid(XROWSDATA.item( 1 ).numer ,1,4) buf = skZlisty while replace " ", "" wend skZlisty = buf BASEHANDLE bKt, bKth, bDokTab(2),bDok(2),bD,bDo bDokTab( 1 ) = dbOpenDokBase( indeksRoku(), 0, 0 ) // księgi bDokTab( 2 ) = dbOpenDokBase( indeksRoku(), 1, 0 ) // bufor bDok(1) = bDokTab( 1 ) bDok(2) = bDokTab( 2 ) SetKey( bDok(1), "id" ) SetKeySeg( bDok(1), "id", idZlisty ) errDok(1) = GetRec( bDok(1), EQ ) SetKey( bDok(2), "id" ) SetKeySeg( bDok(2), "id", idZlisty ) errDok(2) = GetRec( bDok(2), EQ ) if (GetField( bDok(1), "id" )==idZlisty)&&(GetField( bDok(1), "numer" )==nrZlisty)&&(GetField( bDok(1), "skrot" )==skZlisty) Then ZrodloDb = 0 else ZrodloDb = 1 endif DbClose(bDokTab( 1 )) DbClose(bDokTab( 2 )) bD = dbOpenDokBase( indeksRoku(), ZrodloDb, 0 ) bDo = bD SetKey( bDo, "id" ) SetKeySeg( bDo, "id", val(Arg0) ) errDo = GetRec( bDo, EQ ) /* // tu robimy co chcemy z danymi, oczywiście bez przesady :) */ DbClose(bD) Pytanie moje brzmi, czy jest zmienna , właściwość lub metoda pozwalająca w prostszy sposób określić źródło danych z których powinniśmy skorzystać ? PS. spokojnie można "zaremować" operacje tyczące się bazy opatrzonej indeksem 2 :) |
Autor: | qres [ 2013-10-21, 11:18 ] |
Tytuł: | Re: Księgi czy bufor, jak rozpoznać |
Sorki że tak post po poście ale nie mogę edytować poprzedniego. Poniżej poprawiony kod pozwalający określić źródło danych Listy Dokumentów (może komuś się przyda) Kod: #include "dbutil.sci" #include "fkutil.sci" #include "wrap.sci" long idZlisty, ZrodloDb int errDo #define XROWSDATA userObject idZlisty = XROWSDATA.item( 1 ).id BASEHANDLE bKt, bKth, bD,bDo bD = dbOpenDokBase( indeksRoku(), 1, 0 ) // bufor bDo = bD SetKey( bDo, "id" ) SetKeySeg( bDo, "id", XROWSDATA.item( 1 ).id ) errDo = GetRec( bDo, EQ ) if dbNrEwToStr_Dok(bDo)==XROWSDATA.item( 1 ).numer Then ZrodloDb = 1 else ZrodloDb = 0 endif if ZrodloDb == 0 then DbClose(bD) bD = dbOpenDokBase( indeksRoku(), ZrodloDb, 0 ) bDo = bD endif SetKey( bDo, "id" ) SetKeySeg( bDo, "id", val(Arg0) ) errDo = GetRec( bDo, EQ ) if ZrodloDb == 1 Then Print "Dane pobrane z bufora";LF else Print "Dane pobrane z ksiąg";LF endif Print "----------------";LF Print "Arg0 :";Arg0;LF Print "id :";GetField( bDo, "id");"*";LF Print "skrot :";GetField( bDo, "skrot");"*";LF Print "numer :";GetField( bDo, "numer");"*";LF Print "numer ewid:";dbNrEwToStr_Dok(bDo);"*";LF Print "nr. dokum :";GetField( bDo, "nazwa");"*";LF Print "treść :";GetField( bDo, "tresc");"*";LF Print "kontrahent:";GetField( bDo, "kontrahent");"*";LF Print "data dokum:";GetField( bDo, "datadok");"*";LF Print "data wprow:";GetField( bDo, "datawpr");"*";LF Print "data oper :";GetField( bDo, "dataoper");"*";LF Print "kwota :";GetField( bDo, "kwota");"*";LF Print "sygnatura :";GetField( bDo, "sygnatura");"*";LF DbClose(bD) |
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |