[Delphi] Records van x tot y *

Pagina: 1
Acties:

  • marenk_vos
  • Registratie: Augustus 2001
  • Laatst online: 23-07 13:21
Ik zit opnieuw met een probleempje,,,

Ik ben bezig met het programmeren van een applicatie voor een barcode scanner,,, hierin zitten artikelen van bijvoorbeeld een bestelling voor het registreren van een materiaal binnenkomst.

Omdat er geen dbgrid in het schermpje past heb ik een schermpje gemaakt om door een Delphi Table te wandelen met knoppen om linksom de artikelen bij langs te gaan en rechtsom. (ja ik heb het eof / bof probleem al opgelost)

Nu heb ik al een stukje info op het schermpje zetten hoeveel artikelen er in zitten (tableX.recordcount) maar ik wil ook weergeven welk nummer artikel binnen de bestelling er getoond wordt. dus via het principe pagina 6 van 10 maar dan voor de artikelen.

Please help !!

Dell XPS 17 Intel i7 2630 Nvidia GT555 3Gb Hd1: OCZ Vertex 2 SSD 60 GB Hd2: 500Gb


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 17:08

mulder

ik spuug op het trottoir

Position, Cursor iets dergelijks?

oogjes open, snaveltjes dicht


Verwijderd

TableX.RecNo

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:53
RecNo / RecordCount

Eventjes in de help kijken en je zou het rapper gevonden hebben dan het hier te posten.

https://fgheysels.github.io/


  • marenk_vos
  • Registratie: Augustus 2001
  • Laatst online: 23-07 13:21
nope,, geen van allen,, er zit een recordcount en een recno in,,, bij recno pakt hij het daadwerkelijke nummer van de record als je dan dus met een nieuwe tabel bent begonnen (dbase) en je voegt 8 records toe en je verwijdert ze daarna meteen weer en je voegt er opnieuw 1 toe en je doet dan recno verwacht je logischerwijs( over logisch valt te twisten) dat hij dan integer 1 teruggeeft maar dat is dus mooi niet zo hij zegt dan 9!! dus als je dan in de code zet:

recno van recordcount krijg je als uitvoer 9 van 1 ???

Dell XPS 17 Intel i7 2630 Nvidia GT555 3Gb Hd1: OCZ Vertex 2 SSD 60 GB Hd2: 500Gb


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:53
Zelf een tellertje bijhouden?

https://fgheysels.github.io/


  • marenk_vos
  • Registratie: Augustus 2001
  • Laatst online: 23-07 13:21
er moet toch wel een betere oplossing zijn????

Dell XPS 17 Intel i7 2630 Nvidia GT555 3Gb Hd1: OCZ Vertex 2 SSD 60 GB Hd2: 500Gb


Verwijderd

Ik zou een veld opnemen in de tabel met artikelnummer als recno niet werkt. Bij het toevoegen van een artikel zoek je het hoogste nummer en +1 voor het nieuwe artikel.
Raar trouwens dat recno niet werkt, misschien eerst table sluiten en weer openen of een refresh.

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 17:08

mulder

ik spuug op het trottoir

Ik kan me herinneren dat met dBase je files eerst 'marked for delete' and dan pas later een delete deed. Misschien heeft dat er iets mee te maken? Het zou in m'n ogen gewoon moeten werken die RecNo, doe een refresh ofzo.

oogjes open, snaveltjes dicht


  • marenk_vos
  • Registratie: Augustus 2001
  • Laatst online: 23-07 13:21
Nope,,, refresh maakt niks uit,,, bij het commando emptytabel wordt de tabel inhoud ECHT helemaal gewist.

Het lijkt er op dat dit niet gaat werken,,,,,,

Dell XPS 17 Intel i7 2630 Nvidia GT555 3Gb Hd1: OCZ Vertex 2 SSD 60 GB Hd2: 500Gb


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:53
Op woensdag 20 februari 2002 10:58 schreef marenk_vos het volgende:
Nope,,, refresh maakt niks uit,,, bij het commando emptytabel wordt de tabel inhoud ECHT helemaal gewist.

Het lijkt er op dat dit niet gaat werken,,,,,,
Zelf tellertje bijhouden?

https://fgheysels.github.io/


  • marenk_vos
  • Registratie: Augustus 2001
  • Laatst online: 23-07 13:21
hoe had je dat in gedachten dan???

Dell XPS 17 Intel i7 2630 Nvidia GT555 3Gb Hd1: OCZ Vertex 2 SSD 60 GB Hd2: 500Gb


Verwijderd

Met een lus:

Ik zat aan zoiets te denken:
Ga naar BOF
Zet teller op nul
Loop Until EOF Waarbij je telkens je tellertje i een nieuwe waarde geeft. dus i:=i+1
Dan heb je het aantal records in je db.

Nu nog het actieve record. Dit zul je ook wel kunnen benaderen. En dan ook een loop until lus maken met daarin
een teller. De teller stopt als hij bij het actieve record is...

Ja t is al lang geleden dat ik zoiets heb gemaakt, kennis een beetje afgezakt denk ik.

Verwijderd

Op woensdag 20 februari 2002 16:33 schreef Destruction_Dimbo het volgende:
Met een lus:

Ik zat aan zoiets te denken:
Ga naar BOF
Zet teller op nul
Loop Until EOF Waarbij je telkens je tellertje i een nieuwe waarde geeft. dus i:=i+1
Dan heb je het aantal records in je db.

Nu nog het actieve record. Dit zul je ook wel kunnen benaderen. En dan ook een loop until lus maken met daarin
een teller. De teller stopt als hij bij het actieve record is...

Ja t is al lang geleden dat ik zoiets heb gemaakt, kennis een beetje afgezakt denk ik.
Topicstarter hoeft helemaal niet de grootte (aantal records) van het huidige dataset te tellen aangezien de RecordCount wel een correcte waarde teruggeeft.

Wat betreft je RecNo probleem: vreemd maar het zal wel aan je database (Paradox/dBase) liggen.
Hoe op te lossen:
1) Met een bookmark op je huidige record.
2) MoveFirst.
3) inc(I); en MoveNext totdat je bij het opgeslagen bookmark bent.
4) Klaar.

Suc6

  • marenk_vos
  • Registratie: Augustus 2001
  • Laatst online: 23-07 13:21
Ok bedankt,,, ik zal een poging doen. maar bijkomend probleem is dat het om een gefilterde tabel en gaat en dat wanneer ze een correct aantal invullen in de barcode lezer dat het record dan vanzelf verdwijnt omdat het niet meer voldoet aan de voorwaarden van het filter. Wat nou als het record wegvalt dat was ge-bookmarked. De recordcount veranderd dus ook steeds,,,,

Dell XPS 17 Intel i7 2630 Nvidia GT555 3Gb Hd1: OCZ Vertex 2 SSD 60 GB Hd2: 500Gb


Verwijderd

Wat voor een database gebruik je?

Kan me nog vaag herinneren dat alleen paradox de records goed telt in een gefilterde tabel en DBase bv niet.

Verwijderd

Op dinsdag 19 februari 2002 16:35 schreef marenk_vos het volgende:
als je dan dus met een nieuwe tabel bent begonnen (dbase) en je voegt 8 records toe en je verwijdert ze daarna meteen weer en je voegt er opnieuw 1 toe en je doet dan recno verwacht je logischerwijs( over logisch valt te twisten) dat hij dan integer 1 teruggeeft maar dat is dus mooi niet zo hij zegt dan 9!!
Gelijk heeft 'ie. :)
Wanneer je in een dBase tabel een record wist, wordt alleen maar het 'deleted' vlaggetje op True gezet. Pas wanneer je die tabel gaat packen worden die records ook echt verwijderd.
En tot die tijd blijven ze doodgewoon records, die dan wel worden uitgefilterd (in dBase kon je dat regelen met 'set deleted on/off'), maar nog steeds een eigen RecNo hebben.

  • marenk_vos
  • Registratie: Augustus 2001
  • Laatst online: 23-07 13:21
ik gebruik inderdaad dbase,,,,

ik zal maandag wel even een teller proberen te maken,,,

Dell XPS 17 Intel i7 2630 Nvidia GT555 3Gb Hd1: OCZ Vertex 2 SSD 60 GB Hd2: 500Gb


  • Paul
  • Registratie: September 2000
  • Nu online
DBase markeerd inderdaad de records die hij gaat verwijderen. Deze zul je dus ook niet meer vinden in een dbgrid.
Hoe de functie heet (ja, die is er, maar ik weet neit eens of dat een delphi implementatie heeft) weet ik niet, maar als je anar dbase specificaties zoekt zul je daar vast achterkomen. Als ik me niet vergis heet dat PACK of iets dergelijks. Ik weet ook niet hoe 'duur' die operatie is, maar hat is goed mogelijk dat een loopje totdat je er bent goedkoper is.

Wat voor scanner is het? Want wat ik er tot dusver van begrepen heb (wij werken ook met die dingen) hebben die allemaal hun eigen dialect. We werken vooral met denso, maar dat is een soort van basic-achtig iets met een vrij trage proc en een beperkte, eigen DBMS.

Verder geeft RecordCount inderdaad het totaal aantal records in een DBase database weer, ongeacht het filter.
Hoe RecordCount omgaat met 'gedelete' records weet ik niet.

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


  • marenk_vos
  • Registratie: Augustus 2001
  • Laatst online: 23-07 13:21
Ik werk met delphi 5.0, de barcodescanner is een piccolink RF600. Deze scanner heeft een software component dat plserver heet. De barcodescanner heeft zelf geen enkele intelligentie. Hij kan alleen maar schermpjes tekenen en communiceren met de computer. Alles moet dus op de computer geprogrammeerd worden. Dus ook de verbinding met de database wat ik doe is het actieve record locaten (tablex.locate(veld,voorwaarde,[]) en dan de kolommen die ik wil tonen op de barcodelezer laten zien. wat ik concreet doe is dus:

TEXT:
plserver1.text(barcodescannerID,positie opscherm, tablex.fiedlbyname('blabla').asstring;
BUTTON:
plserver1.button(barcodescannerID,positie opscherm, text)

De button kan dus een knop naar links zijn wat resulteert in table1.prior of table1.last (BOF)

Als er dus meer artikelen zijn wil ik dit kunnen tonen en ook welk artikel binnen de groep ze nu bewerken.

Misschien wat vaag omschreven.

De fabrikant is NORDIC ID (nooit van gehoord)

Dell XPS 17 Intel i7 2630 Nvidia GT555 3Gb Hd1: OCZ Vertex 2 SSD 60 GB Hd2: 500Gb

Pagina: 1