Toon posts:

FoxPro / AccountView project

Pagina: 1
Acties:
  • 168 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb al even goed gekeken of deze vraag al eerder is gesteld, maar er waren niet veel vragen over FoxPro. FoxPro lijkt niet interesant meer, maar voor programmeren onder AccountView is het zeker nodig :)

Ik heb een probleem met koppieren van records naar een nieuwe database/tabel.

Wat ik wil bouwen is het volgende:

Ik wil vanuit projecten (cost tabel) record's die de status afgesloten hebben, code 8 dus, naar een nieuwe tabel (archief) koppieren.

Hoe doe ik dat?

Wat ik al wel weet/uitgevonden heb:

USE cost *hier selecteer ik de project tabel
*SET FILTER TO pro_stat = "8" *Zo zet ik een filter
SCAN *begin lezen van tabel

APPEND FROM ARC_NR *dit moet ik nog verder uitzoeken

ENDSCAN


COPY TO archief *Dit koppieerd volgens mij alles naar archief
*COPY TO archief FIELDS LIKE A* EXCEPT IETS en dit sommige velden

Hoe kan ik dit het beste doen? Wat is slim of wijsheid.

Er is niet veel te vinden over Accountview/FoxPro. Ik heb vreselijk mijn best gedaan om hier en daar kleine bruikbare stukjes informatie te vinden, maar het wil niet niet echt lukken om deze aanelkaar te plakken tot een goed werkend programma. Of ik de juiste richting ben ingeslagen weet ik niet :)

Wie zou mij hier mee kunnen helpen m.b.v. een voorbeeldje. Ik ben niet echt een gevorderde FoxPro programmeur, ik ben er sins kort pas mee in aanraking gekomen. Dus veel commentaar bij de code is niet overbodig HAHA.

Alvast bedankt. Als iets niet duidelijk is wil ik graag meer info geven.

Verwijderd

Topicstarter
COPY STRUCTURE EXTENDED to archief koppieerd alleen de structuur

is er ook een methode om record voor record te koppieren?

  • Theguide
  • Registratie: December 2000
  • Laatst online: 26-06-2025
Dit is een ruwe schets.

SELECT cost

* als archeif nog niet bestaat :
copy to archief for pro_stat = "8" with cdx && also copies the indexes

* ELSE :
COPY TO TEMPDBF
SELECT ARCHIEF
APPEND FROM TMPDBF
* ENDIF

Fuck me if I'm wrong, but isn't your name Gretchen?


Verwijderd

Topicstarter
Dank je wel dit werkt super, de database bestond wel. Dus ik had de eerste regel niet nodig.
Het toevoegen met het command append werkt prima. Alleen gebruik ik geen tempdbf maar heb het rechtstreeks gedaan.

Hoe kan ik het ook nog voorelkaar krijgen wanneer het record al bestaat, dat er geen dubbele data voorkomt. Dus als de project code al voorkomt dat deze dan word overgeslagen.

Ohhja een vraagje ik zie heel vaak dat men een tempdbf gebruikt waarvoor is dat? Is het niet goed om direct uit de hoofdtabel te lezen?

Nogmaals bedankt voor je inzet.

Verwijderd

Topicstarter
Ik heb nu de volgende code staan:
=======================================
SELECT cost
copy to archief for pro_stat = 7

Dit werkt prima alle records met de status 7 worden gekoppieerd.

En ik wil hebben het volgende
=======================================
SELECT cost
copy to archief for pro_stat = 7 behalve als dit record al bestaat in archief.dbf
=======================================

Verwijderd

Topicstarter
APPEND FROM C:\Mijn documenten\Visual Foxpro Projects\de Vries\cost.dbf FOR pro_stat = 1

Geeft de foutmelding "Command contains unreconized phrase/keyword."

Verwijderd

Topicstarter
Sorry dit werkt wel beter

use archief
APPEND FROM "C:\mijn documenten\visual foxpro projects\kleefstra\cost.dbf" FOR pro_stat = 4

Verwijderd

Topicstarter
Hoe zorg ik er voor dat bestaande record's in het archief niet nog eens worden toegevoegd?

En nog een vraagje waarom werkt deze code wel in FOXPRO en niet onder accountview wat ook foxpro is?

Verwijderd

Topicstarter
Ik ben nu zo verdat ik alle records kan koppieren die de waarde pro_stat hebben.
Maar als ik dit vaker doe komt alles er dubbel in, en als ik het nog een keer doe 3 keer ik wil alleen alle nieuw (die nog niet bestaan in het archief) koppieren.


Ik gebruik nu deze code:

USE "C:\Program Files\AccountView\klantnaam2003\cost.dbf"
SET FILTER TO PRO_STAT = 9
SCAN
SCATTER MEMVAR
INSERT INTO "C:\SDK\archief\klantnaam2003\archief.dbf" FROM memvar
ENDSCAN


Ik denk dat ik zoiets moet doen??

USE "C:\Program Files\AccountView\klantnaam2003\cost.dbf"
SET FILTER TO PRO_STAT = 9
SCAN
SCATTER MEMVAR

IF COST_PROJ <> archief.COST_PROJ
INSERT INTO "C:\SDK\archief\klantnaam2003\archief.dbf" FROM memvar
ENDIF
ENDSCAN

Maar die if regel moet in twee tabellen kijken. Hoe doe ik dat. Wie heeft er verstand van FoxPro of Accountview.

Verwijderd

Topicstarter
Deze draad loopt nu al een tijdje, volgens mij zijn er maar een aantal mensen die verstand hebben van FoxPro, ik begin het nu net wat te leren maar hier zou ik graag wat hulp bij krijgen.
Ik zal miin vraag nog even toelichten. De if regel moet er voor zorgen dat er niet dubbele records voor gaan komen. Dus als een record al bestaad dan moet deze niet nog een keer worden toegevoegd. Ik weet niet of dit met een if regel moet, misschien kan dit veel makelijker. Vaak is het zo dat in FoxPro het makkelijker is dan je denkt. Ik denk misschien te moeilijk. Ik ben andere programmeer talen gewend, die veel meer code nodig hebben.
Pagina: 1