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

Eksport niezrealizowanych zamowien
https://forum.mix-soft.pl/viewtopic.php?f=15&t=1386
Strona 1 z 1

Autor:  JacekBomba [ 2009-11-09, 16:39 ]
Tytuł:  Eksport niezrealizowanych zamowien

Witam.
chcialbym wyeksportowac niezrealizowane zamowienia. Robie to w nastepujacy sposob:

Int basBD=open KatalogFirmy()+"51bd.dat" for base "bd"
baseError (basBD, 4)
SetKey(basBD,"rozliczone")
SetKeySeg(basBD, "oki", 1)

Int errBD=GetREc(basBD,LT)
while !errBD


currentRow = "zamowienie"
currentRow += ";" + ToString(GetField(basBD, "id"))
Print # Numer_pliku; currentRow + LF



errBD=GetREc(basBD,NX)

Wend
close basBD

Niestety, jako wynik otrzymuje rowniez dokumenty z oki=1.

Pozdrawiam,
Jacek

Autor:  tomko [ 2009-11-09, 17:01 ]
Tytuł: 

daj PR zamiast NX bo idziesz w dół po rekordach a nie do góry :)

Autor:  rafal [ 2009-11-09, 20:21 ]
Tytuł: 

Kod:
string currentRow

basebd basBD

basBD.SetKey("rozliczone")
basBD.SetKeySeg("oki", 0)

Int errBD=basBD.GetREc(GE)
while !errBD && basBD.GetField("oki") == 0


currentRow = "zamowienie"
currentRow += ";" + basBD.GetField("kod")
Print currentRow + LF

errBD=basBD.GetREc(NX)

Wend

Autor:  JacekBomba [ 2009-11-09, 23:46 ]
Tytuł: 

tomko pisze:
daj PR zamiast NX bo idziesz w dół po rekordach a nie do góry :)


Dlaczego w takim razie otrzymuje rowniez dokumenty z oki=1? Jesli szedlbym w dol, to nie powinienem dostac zadnych rekordow.

Autor:  JacekBomba [ 2009-11-09, 23:48 ]
Tytuł: 

rafal pisze:
Kod:
string currentRow

basebd basBD

basBD.SetKey("rozliczone")
basBD.SetKeySeg("oki", 0)

Int errBD=basBD.GetREc(GE)
while !errBD && basBD.GetField("oki") == 0


currentRow = "zamowienie"
currentRow += ";" + basBD.GetField("kod")
Print currentRow + LF

errBD=basBD.GetREc(NX)

Wend


To po co zakladac indeks, skoro i tak przechodze przez wszystkie rekordy i 'recznie sprawdzam' rekordy?

Autor:  Misiek [ 2009-11-10, 07:36 ]
Tytuł: 

JacekBomba pisze:
rafal pisze:
Kod:
string currentRow

basebd basBD

basBD.SetKey("rozliczone")
basBD.SetKeySeg("oki", 0)

Int errBD=basBD.GetREc(GE)
while !errBD && basBD.GetField("oki") == 0


currentRow = "zamowienie"
currentRow += ";" + basBD.GetField("kod")
Print currentRow + LF

errBD=basBD.GetREc(NX)

Wend


To po co zakladac indeks, skoro i tak przechodze przez wszystkie rekordy i 'recznie sprawdzam' rekordy?

Nie przechodzisz przez wszystkie rekordy, tylko ustawiasz się na nie rozliczonych (oki = 0) i biegasz po tych rekordach, do czasu aż nie trafisz na wartość oki != 0 - wtedy pętla While się kończy bo warunek w tej pętli jest nie spełniony. Warunek to oki = 0 nie będzie spełniony, jeżeli trafisz na zamówienia rozliczone i wtedy wypadasz z pętli.

Kod Rafała jest tutaj jak najbardziej poprawny - minimum operacji do uzyskania oczekiwanego przez Ciebie efektu :-)

Autor:  JacekBomba [ 2009-11-10, 09:25 ]
Tytuł: 

Dzieki za pomoc.
Pomylilem indeksy z filtrowaniem.

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