Czym zajmuje się KAMIENIARSTWO ?
Temat: harbour - clipper - nowosci.
...are not yet implemented. Please note that the scripts do *not* [yet] support Ole Automation. ===================================================== Przy pomocy tego skrypu zalozylem tabele, poindeksowalem ja zgodnie z CDXami, dodawalem rekordy. Skrypt taki, j.w. pisze, mozna roznie uruchamiac, robilem to spod iExplorera i CMD. W tym samym czasie tabela ta byla otwarta przez aplikacje clipperowa, ktora na biezaco widziala zmiany robione w tabeli (nawet przed dbUnLock() - co wskazuje na jakas niezgodnosc). W skrypcie uzywa sie skladni zywcem wzietej z Clippera (i to przed preprocesorem !), a wykonuje sie to jako skrypt windowsowy - widac ze z czasem pewnie bedzie mozna wlaczyc to do wspolpracy z serwerem www. Nie ma na razie GUI, i na ten moment mozna sie poslugiwac jedynie Alert'em() - ale juz w tej chwili mozna przy jego uzyciu pisac skrypty ktore beda wykonywac jakies przetwarzanie z uzyciem DBFow - nawet przy pracujacym...
Źródło: topranking.pl/1252/harbour,clipper,nowosci.php
Temat: CLIPPER
...Czy ma ktos moze wykaz funkcji ktore nie moga byc uruchomine w wyrazeniu | aliasowym ? | Np. nie mozna : | Alias-( F_cjaTuNieDzialajaca()) | Marek Horodyski Piszę programy w Clipperze od wielu lat, ale nie spotkałem się z takim problemem, jeżeli oczywi¶cie funkcja ma sens w wyrażeniu aliasowym. Podaj może przykład jaka funkcja nie daje się uruchomić w wyrażeniu aliasowym. Pozdrawiam Marek Ha, zebym to ja pamietal. Dzis spod debuggera nie poszlo mi Alias-( dbUnLock()), a po przejsciu do tego obszaru zdjecie blokad zadzialalo. No, ale to bylo spod debuggera, wiec moze sie nie liczyc (polecenie po "?" w oknie zapytan). W programie to normalnie dziala. Ale cos mi zaswitalo ze w dokumentacji byla jakas informacja o zle dzialajacych funkcjach w wyrazeniu aliasowym - ale moge tu cos mylic. Dokumentacji nie widzialem juz pare lat, i nie mam jej pod reka. Moze to jednak pamiec plata mi figla :) Pozdrawiam, Marek...
Źródło: topranking.pl/1253/68,clipper.php
Temat: Problem z rozjeżdżaniem się indeksów.
Marek Horodyski wrote: [...] Pamiętasz może nazwę? Przejrzałem zawartość, ale nic niestety nie znalazłem... Darek podal nizej ... Mógłbyś rozwinąć swoją myśl, tzn. co można w tej kwestii poprawić w aplikacji? Dokumentacja mowi : 1. edytujemy dane w zmiennych. U mnie np. dokument zlozony, (np. faktura z pozycjami) jest jena zmienna (wielowymiarowa tablica). Do zapisu idzie w calosci i zwalniana jest (Alias-( dbUnLock())) w calosci. 2. blokujemy dane do zapisu jeszcze przed kontrola formalna dokumentu (swiadomie tego nie robie, ale blokuje grupy rekordow przed zapisem i zwalniam tez cale grupy jedna instrukcja) 3. Na DBFach commit robimy przed zwolnieniem (wg. dokumentacji - administrator ma to w opcji). 4. zwalniamy zaraz po zapisie Czesciej zdarzy sie ze na Novelu przesuniecie w dbfie w paru miejscach po dwa bajty w prawo lewo albo rozjechanie konca pliku DBF niz ww...
Źródło: topranking.pl/1252/problem,z,rozjezdzaniem,sie,indeksow.php
Temat: [Clipper]
...Jaką zastosować metode np. przy numeracji dokumentów w sieci by numery sie nie powtarzały. Nadawac numery ktore pochodza z pola tabeli numerow. W skrocie : wywolanie : Faktury-Numer := DajNumer( 'NumeryFaktur') *---------------- i sama funkcja : Function DajNumer( czegoNumer) If !Numery-( dbSeek( czegoNumer)) Numery-( dbAppend()) Else While !Numery-( dbRlock()) End End Zwrot := ++Numery-Numer ; Numery-( dbUnLock()) Return zwrot Dziekuje. Pozdrawiam, Marek Horodyski
Źródło: topranking.pl/1252/12,clipper.php
Temat: i COMMIT
...rekord. Ale może masz racje. Może jeszcze ktoĂś się wypowie na ten temat. Po co sie klocic - wystarczy poczytac ;o) Network environment: DBCOMMIT() makes database updates visible to other processes. To insure data integrity, issue DBCOMMIT() before an UNLOCK operation. For more information, refer to the "Network Programming" chapter in the Programming and Utilities Guide. Ale to dbUnLock() lub dbrUnLock( nRec) powoduje widoczosc zmian. Zawsze to mozna sprawdzic. Wylaczenie commitow znacznie przyspiesza prace serwera. Zreszta, niekiedy widac ze jest on ignorowany - tez mozna to sprawdzic. Marek Horodyski
Źródło: topranking.pl/1252/i,commit.php
Temat: - NTX->CDX
"BaLab" <ba@polbox.comwrote in message | | while !numery-(rlock()) // semafor | enddo | A nie powinno być FLock() ? Inaczej istnieje prawdopodobieństwo, że oba | programy blokują inne rekordy... Nie, każdy rekord jest dla określonej bazy danych. Pozdrawiam - Janek P.S. Niestety nadal nie wiem, czemu program nie działa dla CDXów :-( A ja nie wiem dlaczego dziala dla NTXow. Przed zrobieniem dbUnLock() nikt nie powinien zobaczyc zmian. dbCommit() nie ma tu nic do rzeczy. Po zrobieniu
Źródło: topranking.pl/1253/ntx,cdx.php
Temat: problem z CLOSE ALL
...Parametry_Dokumentu) gdzie : Function Numerator( Parametry) Local dok := Alias(), zwrot := 0 Use_Select( 'NUMERATOR') modiDbSeek( Parametry) // paremetry moga spowodowac rozpoczecie numeracji po zmianie roku, miesiaca itp. // tzn. ze jak nie znajdzie to doda rekord, jak znajdzie musi zablokowac zwrot := ++Field-Numer ; dbUnLock() dbSelectArea( dok) Return Zwrot tak pobieznie. Dokladnie chodzi o moment nadania numeru - nie w chwili checi nadania numeru, tylko w momencie jego zwolnienia (zapisu). Stosuje taka technike numerowania dokumentow od wielu lat i doceniam jej zalety. Czesto widze nadawanie numeru w momencie checi stworzenia dokumentu i wlasnie temu sie dziwie. A co jak zrezygnujemy a ktos inny tez zechce dpisywac w miedzyczasie itp. "Same dziory"....
Źródło: topranking.pl/1252/problem,z,close,all.php
Temat: Polskie znaki w Clipperze
... znak := Substr( txt1, i, 1) If ( z := At( znak, mazovia)) == 0 txt := txt + znak Else txt := txt + SubStr( LatinII, z, 1) End End If RLock() FieldPut( FieldPos( Lista[ n][ 1]), txt), dbUnLock() End End dbSkip( 1) ?? CHR(13) + Str( lastREC() - recNO(), 6) End dbCloseAll() Return Nie wiem czy dobrze beda odczytane stringi w deklaracjach zmiennych, nalezy miec nadzieje. W razie czego moge podeslac kody ascii. Po dolaczeniu obj-ow do latin2 nalezy przeindeksowac dane, bo w przeciwnym wypadku beda zglaszane bledy uszkodzen zbiorow indeksowych. Marek Horodyski
Źródło: topranking.pl/1252/polskie,znaki,w,clipperze.php
Temat: CLIPPER - samododajace sie rekordy
...ponizszy ciag wydarzen : 1. Otwieramy tabele w trybie shared. Tabela ma ze 3 klucze indeksowe w CDX. Dla szybszego zaobserwowania zjawiska, niech tabele bedzie pusta ( LastRec() == 0, RecNo() == 1). Widzialnosc danych aktywny jest po 1 indekse. 2. Na tej tabeli zakladamy Rlocka'a. Oczywiscie zalozy sie, pomimo tego ze tabela jest w stanie Eof() ! To chyba jest najwieksza wada CDXow. Prosze teraz zmienic wartosc jakiegos pola i zdjac blokade ( dbUnLock()). Jak do tej pory nic sie nie stalo (jeszcze nie wiem dlaczego, ale ale na WinXP blad wystapil juz w tym momencie - czyzby rozne dzialanie roznych wersji windows - a moze wplyw innych czynnikow - opisywany test jest na W98). I coz sie stalo ? A wiec : W tym momencie LastRec() zwraca 1 (rekord sam sie zalozyl !) ! RecNo() zwraca 2 ! Eof() zwraca .F. ! (kto nie wierzy - niech sprawdzi !! - nawet z innej stacji !!!) Do samoistnie zalozonego rekordu nie mozna dostac sie w...
Źródło: topranking.pl/1252/clipper,samododajace,sie,rekordy.php
Temat: Clipper 5.2 liczenie
...po NR_FAKTURY (np. Faktury-( dbClearRel(), dbSetRelation( 'POZYCJE', { || NR_FAKTURY}, 'NR_FAKTURY')) gdzie indeks w pozycjach jest po NR_FAKTURY) If Faktury-( dbRlock()) Faktury-Pozycji := Faktury-Wartosc := 0 While Faktury-Nr_Faktury == Pozycje-NR_Faktury ++Faktury-Pozycji ; Faktury-Wartosc += Pozycje-( ILOSC * CENA) Pozycje-( dbSkip( 1)) End Faktury-( dbUnLock()) End Oczywiscie samo wyrazenie ustalenia wartosci pozycji moze byc bardziej skomplikowane, jak uwzglednisz cla i podatki i rodzaj stosowanej waluty, ale nie jest to juz technologia, tylko merytoryka. Pozdrawiam, Marek Horodyski
Źródło: topranking.pl/1253/clipper,5,2,liczenie.php
Temat: NTX -> CDX
...enddo f_s-(dbappend()) WHILE neterr() f_s-(dbappend()) ENDDO Tu jest na 99% blad, ten w/wfragment kodu nic nie robi. To n/w jest u Pana najwazniejsze. f_s-(dbgobottom()) vsym2 := f_s-fs_sym2+1 I teraz dopiero Pan daje appe blank i zapisuje numer. f_s-(dbappend()) WHILE neterr() f_s-(dbappend()) ENDDO f_s-fs_sym2 := vsym2 f_s-(dbcommit()) numery-( dbunlock()) W skrocie u Pana to ma byc tak: go bottom nowy_nr=numer+1 add_rec() replace numer with nowy_nr unlock IMHO Pan musi zmienic sposob numerowania dokumentow, niezaleznie od zastosowanych indeksow. serdecznie pozdrawiam Adams PS 1. Tak przy okazji czasem warto ulatwic sobie zycie piszac wlasne/korzystajac z funkcji rec_lock(), add_rec().
Źródło: topranking.pl/1254/ntx,cdx.php
Temat: Clipper internal error 1240
Witam Mam wielki problem. w firmie jest program autora ktorego nieststy juz nie mozna nigdzie znalezc. program dzialal do niedawna ok lecz nagle po awari sieci cos jest nie tak. problem jest taki ze przy wprowadzaniu dokumentu i probie zapisu wywala taki blad: BLAD DBFNTX/1200 Blad typu danych i sie wywala po czym wypisuje: DBUNLOCK(0): blad wewnetrzny 1240. Doczytalem ze pierwszy blad spowodowany jest proba wprowadzenia do bazy danych zlego typu - lecz program wczesniej (10 lat) dobrze dzialal. drugi blad ( http://www.ghservices.com/gregh/clipper/ie52e.htm#1240 ) - z tego co doczytalem to moze byc wina popsucia sie plikow baz lub indexow wiec stworzylem nowe bazy i do nich indeksy ale tylko te ktore sa ruszane przy uruchamianiu tego programu. i nic to nie dalo. zauwazylem ze...
Źródło: topranking.pl/1254/clipper,internal,error,1240.php
Temat: NTX -> CDX
...2 użytkowników faktur) nadaje ten sam numer 2 fakturom. Co robię źle? Clipper 5.3, Exospace, Novell. Używam DBFNTX do części baz i DBFCDX do niektórych - może tak nie można? while !numery-(rlock()) // semafor enddo f_s-(dbappend()) WHILE neterr() f_s-(dbappend()) ENDDO rn := f_s-(recno()) f_s-(dbgobottom()) vsym2 := f_s-fs_sym2+1 f_s-(dbgoto(rn)) f_s-fs_sym2 := vsym2 // numer faktury f_s-(dbcommit()) numery-( dbunlock())
Źródło: topranking.pl/1254/ntx,cdx.php
Temat: NTX -> CDX
... nr_pola == Nil .AND. wartosc == Nil numer := ++Field-numer ElseIf ValType( nr_pola) == 'N' .AND. Przedzial( 1, nr_pola, FCount()) numer := FieldGet( nr_pola) If wartosc != Nil .AND. ValType( numer) == ValType( wartosc) FieldPut( nr_pola, wartosc) End End If v( AUTOCOMMIT) dbCommit() End dbUnLock() If !Empty( b) Select( b) End End Return numer Marek Horodyski
Źródło: topranking.pl/1254/ntx,cdx.php
Temat: Clipper i fakturowanie
...o jeden dla wywoĂĹźywanej nazwy Local numer := 0, b := Alias() If Use_Dbf( 'NUMERY') If BPT( nazwa) Field-nazwa := nazwa End If wartosc == Nil numer := ++Field-numer ElseIf ValType( wartosc) == 'C' numer := Field-Numer ElseIf ValType( wartosc) == 'N' numer := Field-Numer := wartosc End /*DBCommit() ; */ dbUnLock() Select( b) End Return numer ********************* Pojawia sie tu funkcja BPT, ktora mozna w skrocie tak okreslic : Function Bpt( parametr) If !dbSeek( parametr) dbAppend() Return .t. Else Rlock() End Return .f. ale w rzeczywistosci jest to o wiele bardziej skomplikowany element duzo wiekszego mechanizmu. Zwroci ona zawsze prawde dla pierwszego wywolania funkcji NUMER z nowym...
Źródło: topranking.pl/1252/40,clipper,i,fakturowanie.php
Temat: Clipper + Samba
Uzywam oprogramowanie bazodanowego (clipper) na komputerach Windows 95, 98, DOS. Serwer linux red-hat 7.2 SAMBA Wszystko dziala swietnie jednak czasami zdarza sie, ze powieli mi sie numer dokumentu i nie mam pojecia z czym to moze byc zwiazane. Liczniki przechowywane sa w jednym pliku .dbf i przy kazdym wystawieniu dokumentu powinny sie zwiekszac, jednak raz na jakis czas tak sie nie dzieje... prosze o pomoc Poczytaj o: dbCommit() dbUnlock() Poczytaj dokumentacje do Samby - znajdziesz tam coś takiego jak Win9X-CacheHandling.reg A pozatym jak pisał kolega Marek - możesz mieć buraka w programie.
Źródło: topranking.pl/1255/clipper,samba.php
Temat: usuwanie
...w VFP3 nie stosujac polecenia PACK, gdyz polecenie to wymaga wylacznego dostepu do pliku, a moje pliki DBF sa wspoluzytkowane. Darek D. 2 sposoby : 1 - pierwszy ktory otworzy na Exclusiv (jak mu sie uda) - robi PACK. UWAGA - wskazane jest jakies zaznaczanie - czy byl robiony dbDelete() na tabeli. 2. : Zamiast dbDelete() cos na ksztalt (ziala tylko przy istniejacych indeksach !) : If Rlock() WyczyscRekord() dbDelete() dbUnLock() // zalecane tez : dbSkip( 1) End Zamiast Append Blank cos na ksztalt funkcji dbApp() : Set( 11, .f.) dbGoTop() If deleted() Rlock() dbRecAll() Else dbAppend() End Set( 11, .t.) Funkcje musisz dopracowac - tu jest idea - kazdy nowy rekord wpada w miejsce skasowanego. Marek Horodyski
Źródło: topranking.pl/1257/usuwanie.php
Temat: Clipper - przejście z NTX na CDX
Andrzej P. Wozniak <us@poczta.onet.pl.invalid napisał(a): Bardziej wskazane jest tu użycie blokady pliku i blokowej zamiany if flock() replace data1 with nowa_data, data2 with nowa_data all // for ... dbunlock() Daje dokladnie ten sam wynik - error no 8006. Czy "DATA" oznacza datę kalendarzową czy dane? Użyj jawnie konwersji do tekstowego wyrażenia indeksowego np. DTOS(DATA) lub STR(DATA) czy w ogólnej postaci cField1 + DToS(dField2)+ Str(nField3), zwłaszcza jeśli używasz sortowania polskiego z plikami NTXsort.OBJ. Pole typu "Date" i indeks jest po dacie. Bede musial pewnie przejsc na indeks on dtos(data) (uzywam...
Źródło: topranking.pl/1252/clipper,przejscie,z,ntx,na,cdx.php
Temat: [CLIPPER]
...dla grupowiczów: kto poda krótki przyklad programu, który rozwali pliki indeksowe ? Warunek oczywiscie, ze sa one otwarte podczas aktualizacji bazy danych. 1. Porzadny serwer - zadne Windows - Novell albo Samba 2. Porzadnie polozone okablowanie - zadnych kabli na podlodze, zadnych hubow za 100,- pln, zadnych wtyczek bez zachowanej sekwencji, zadnych gniazdek telefonicznych 3. Porzadnie skonfigurowana siec - tylko TCP/IP 4. W programie zawsze po zmianach dbUnlock i dbCommit (w tej kolejnosci) 5. Na zakonczenie aplikacji kasujesz flage Archive (jak sie uda) 6. Na rozpoczecie aplikacji sprawdzasz flage Archive dla DBF, memo i indeksow - jak jest ustawiona to kasujesz indeksy i indeksujesz na nowo 7. Uzywasz DBFCDX, nie uzywasz pack, reindex Dla sieci do 10 klientow wystarczy - mam kientow (piekarnie, stacje benzynowe, duze sklepy), w ktorych w niektorych tabelach jest ponad 1 mln.rekordow (razem baza - ok 1 GB),...
Źródło: topranking.pl/1252/80,clipper.php
Temat: dbf i fpt
...lancuchy znakow. Np. mam tak (jakis fragment sciagniety z | ekranu ) : [...] Zarówno xHarbour jak i Clipper 5.3 potrafią zapisywać do FPT dowolne typy zmiennych z wyjątkiem skompilowanych bloków kodu. Więc nie muszą to być tylko zmienne znakowe np: filed-fmemo := date() Uzywam bardzo intensywnie pol memo, i myslalem ze nic mnie juz nie zaskoczy. Ale jak widac, czlowiek cale zycie sie uczy. Faktycznie : rlock(), field-superstart := date(), dbUnLock() // -zwrocilo AJENT, wartosc pola idacego do indeksu. w polu jest data, a pole nadale jest "M" ! ValType( FieldGet( FieldPos( 'SUPERSTART'))) // Zwraca "D" ! O ! Przy powrocie do obiektu browsera aplikacja zwisła :( Czyli mozna - ale ostrożnie :) "rewitalizowalem" aplikacje (taki krzyzyk w prawym gornym rogu :). Po restacie : Blad BASE /1101 Argument error : LTRIM Oj - bardzo ostrożnie. No tak, browser ma blok...
Źródło: topranking.pl/1252/dbf,i,fpt.php
Temat: clipper+cdx+pole_logiczne
Czy miał ktoś problem z polami logicznymi w clipperze z RDD CDX. Zgłasza mi jakis dziwny błąd wykonania po modyfikacji rekordu w polu logicznym funkcja dbUnLock() - , a pole to jest kluczem indeksu. Nie ma tego przy NTX-ach. Marek Horodyski
Źródło: topranking.pl/1254/clipper,cdx,pole,logiczne.php
Temat: NTX -> CDX
...enddo f_s-(dbappend()) WHILE neterr() f_s-(dbappend()) ENDDO rn := f_s-(recno()) jaki masz w tym momencie aktywny klucz indeksowy na bazie f_s - jesli fs_sym2+ .... to ok f_s-(dbgobottom()) vsym2 := f_s-fs_sym2+1 w przeciwnym niekoniecznie staniesz na najwyzszym numerze f_s-(dbgoto(rn)) f_s-fs_sym2 := vsym2 // numer faktury i tutaj podstaw rowniez pozostale skladniki klucza ind (jesli masz) f_s-(dbcommit()) numery-( dbunlock()) ponaddto sprawdz z innym klientem novela w tej chwili nie powiem w jakiej konfiguracji ale znam przypadki gdzie zmiana klienta novella rozwalala dbf-y z takim przypadkiem jak u ciebie borykalem sie pod win9x z kartami 3com combo (jedne z pierwszych na PCI) - pomogla dopiero zmiana driverow w win9x na 16-bitowe a bylbym zapomnial u mnie tak bylo z ntx-ami tak ze niekoniecznie to wina cdx-ow
Źródło: topranking.pl/1254/ntx,cdx.php