[dBase 5.0] Ancient applicatie modern herschrijven *

Pagina: 1
Acties:

  • Joske Pauwels
  • Registratie: Februari 2001
  • Laatst online: 19-07-2016

Joske Pauwels

Stelt zich vragen...

Topicstarter
[inleidend praatje, skip maar als je enkel in de technische kant geïnteresseerd bent]
Ik ben viavia in contact gekomen met een vereniging (genaamd Cofena) die klassieke concerten organiseert. Ze werd tot voor kort voorgezeten door een pater van de missionarissen van Afrika; probleem is dat deze man vorige maand gestorven is. Tweede probleem is dat hij blijkbaar een soort computer-goeroe was, en hij heeft een systeem nagelaten voor de abonnees, reservaties, tickets etc in DOS. Het systeem is wel werkbaar, maar de huidige mensen die het moeten bedienen willen toch iets gebruiksvriendelijker, liefst gekoppeld aan een online reservatiesysteem. En ik moet dat dus maken :)
[/inleidend praatje]

Er is een grote database met een 1200-tal abonnees, met verschillende velden (abonneenr, adres, hun vaste plaats, etc...); die bediend werd dmv van een soort .bat bestand.
Ik ben vandaag de hele micmac van hun computer gaan kopiëren, maar ik zou echt niet weten hoe ik die oude database moet omzetten.

Het is een Borland dBASE 5.0 for DOS, en ik zou het ding naar MySQL willen omzetten. Het lukt mij hier onder winxp wel om de database software zelf op te starten, maar de specifieke software die de frontend vormde en de queries genereerde etc is blijkbaar te DOS voor onder winxp ;)

De database zelf moet wel SQL ondersteunen, maar het is erg outdated en ik vind nergens waar ik de queries kan ingeven; en erger nog: hoe krijg ik de data hieruit?

Gezien de omvang van de gegevens is het niet mogelijk om alles er met de hand uit over te typen. Wat stellen jullie voor? Bestaan er nog conversie tools voor dit soort oude databases (copyright is 1984-1994 :D)
En indien neen: hoe krijg ik het er dan uit? Zou ik een soort CVS bestand kunnen genereren?

Of heeft er iemand nog ervaring met dat programma?

Ik wil gerust wat dingen online plaatsen; maar ik zit met wat gewetensproblemen gezien het een uitgebreid privaat adresbestand is, en de software zelf online zetten mag mss zogezegd niet :?

Tnx!

PS: Voor alle duidelijkheid; jullie moeten geen code in mijn plaats schrijven of zo. Ik vroeg me gewoon af hoe ik die data er best uit krijg: via sql commands naar een file of een zelfgeschreven progje dat de database inleest en in MySQL invoert of ...

[ Voor 9% gewijzigd door Joske Pauwels op 20-12-2003 01:20 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Okee heropend en renamed na kort overleg topicstarter :)

Voor alle duidelijkheid: het gaat dus om tactiek en te volgen aanpak om deze applicatie naar moderne faciliteiten om te zetten, en om daarbij de data integraal bewaard te blijven. Het programmeerwerk zal gewoon door TS zelf gebeuren, hier en daar waar mogelijk ondersteund door onze hints en tips :Y)

Professionele website nodig?


  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
Dit niet wat misschien:
http://anubisnet.sourceforge.net/products/dbf/index.php?

Je kan het dan dus naar een csv bestand doen en dan weer importeren met bv. een php scriptje...

[ Voor 35% gewijzigd door zoepercavia op 18-12-2003 00:22 ]

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


  • ruthger
  • Registratie: September 2000
  • Laatst online: 22-11-2024
Misschien is Visual Foxpro iets voor jou. Foxpro is een dBase clone maar kan tegenwoordig web applicaties maken..

Veni, vidi et cervesiam


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Kan/kon Excel niet gewoon dbase bestanden inlezen?

[ Voor 5% gewijzigd door Annie op 18-12-2003 00:29 ]

Today's subliminal thought is:


Verwijderd

De data converteren lijkt me niet een al te groot probleem, mits je de database layout 1op1 houdt. Je kan in dbBase als ik het me goed herinner gewoon een cvs dump maken, en die vervolgens inlezen in mySql. Dit zou je ook nog gewoon als tussen stap kunnen doen om de database een andere layout e geven. Het schrijven van een conversie tooltje voor de desbetreffende query's van dBase naar Sql zal op zich ook niet zo'n probleem geven.
Ga je de applicatie helemaal vanaf de grond af opnieuw schrijven ? zoja leg eerst even duidelijk de huidige functionaliteiten neer, en leg daarnaast de nieuwe gewenste functionaliteiten. Maar nogmaals, in puur het dumpen vanuit dBase en laden in mySql zie ik niet zo 123 een probleem.

  • Brothar
  • Registratie: Oktober 2000
  • Laatst online: 04-02 09:14

Brothar

meester

Ik denk dat je eerst inzicht moet gaan krijgen in de diverse tabellen,en de indexen en relaties.
Met behulp van het gecompileerde Dbase 5 programma kun je dan inzicht krijgen in de diverse functionaliteiten (o.a. aan de hand van de menu's).
Daarna moet je dan, daarvan uitgaande, bepalen welke extra functionaliteit men dan wil hebben. Dan leg je automatisch een nieuwe tabellenstructuur aan, en komt automatisch bovendrijven welke tabellen je op welke wijze wilt converteren.

De Dbase 5 tabellen zijn door diverse systemen in te lezen, ik zelf zou, uitgaande van MysSQL, ervoor kiezen de tabellen te dumpen in een tekstfile, en een pascalprogramma'tje maken dat aan de hand van die tekstdumpt insert-sql-opdrachten aanmaakt (is tenslotte allemaal tekst).

Je kunt ook overwegen met Delphi/Kylix een front-end te maken.
Overigens zit bij Delphi Enterprise een dusdanige database-functionaliteit, dat je die kunt gebruiken om rechtstreeks de MySQL-tabellen (via ODBC-koppelingen) te vullen vanuit de Dbase 5 tabellen.

eagle


Verwijderd

Brothar schreef op 18 december 2003 @ 00:44:
Overigens zit bij Delphi Enterprise een dusdanige database-functionaliteit, dat je die kunt gebruiken om rechtstreeks de MySQL-tabellen (via ODBC-koppelingen) te vullen vanuit de Dbase 5 tabellen.
Klopt ik heb (weet niet of het nog erbij geleverd wordt) Delphi 5 zo'n "datapump" tooltje, erg handig voor dit soort praktijken.

  • jwpmzijl
  • Registratie: December 2002
  • Laatst online: 27-05 23:44
Jouw eerste probleem is natuurlijk om de data vanuit de Dbase tabellen naar Mysql te krijgen. Een manier is om Access te gebruiken De versie 97 t/m XP kunnen Dbase 5 tabellen rechtstreeks inlezen. Vanuit Access kun je ze dan manipuleren en naar Mysql overzetten.
Het grootste probleem is wellicht om te achterhalen hoe de relaties tussen de verschillende tabellen zijn. Daarvoor ontkom je er niet aan om de originele broncode te bestuderen (nou, wellicht dat de samenstelling van de tabellen al genoeg info geeft).

Hans van Zijl


  • Brothar
  • Registratie: Oktober 2000
  • Laatst online: 04-02 09:14

Brothar

meester

Bij de Trial van Delphi 7 zat het ook.
Ik heb nog's je start-post gelezen: ik denk dat je de broncode toch moet kunnen lezen om bijv. voorrangsregels te weten te komen (bijv. 2 abonnees met dezelfde voorkeur: wie gaat dan voor ?).
En ik denk dat de vereniging vastomlijnd moet kunnen zeggen wat ze nu precies willen. Daarbij geldt: hoemeer verlangens,hoe ingewikkelder, en hoe langer het duurt voor het af is ( ervan uitgaande dat het dan nog te doen is.).

(Clipper ? Niet nodig: Dbase 5 had zelf een compiler).

[ Voor 94% gewijzigd door Brothar op 18-12-2003 00:56 ]

eagle


  • Bud_s
  • Registratie: Maart 2002
  • Laatst online: 25-05 18:29
Misschien handig om op zoek te gaan naar de sources van de front end ??

Zou heel goed ge-clipper-de dbase kunnen zijn.

Als ze beschikking hebben over de machine, zou je de sources daar ook verwachten.

Met de sources kan je de logica bepalen. De structuur van de tabellen lijkt me namelijk niet het probleem.

maw: ga op zoek naar zijn sources (welke taal dan ook) probeer in kaart te brengen wat het programma doet (en waarom). Met een beetje geluk vind je ook nog comments in de source :)
Als het nu goed werkt : vind het wiel niet opnieuw uit, maar verbeter het :)

offtopic:
jwpmzijl was me voor :(

[ Voor 5% gewijzigd door Bud_s op 18-12-2003 00:55 ]


  • bigben04
  • Registratie: December 2001
  • Laatst online: 07-05 10:38
CDBF kan ook Dbase bestanden inlezen en tevens exporteren naar SQL-insert queries. Gaat niet helemaal automatisch goed, je zal er handmatig nog naar moeten kijken maar wellicht het proberen waard (trial versie is gratis).

  • Joske Pauwels
  • Registratie: Februari 2001
  • Laatst online: 19-07-2016

Joske Pauwels

Stelt zich vragen...

Topicstarter
bigben04 schreef op 18 december 2003 @ 00:58:
CDBF kan ook Dbase bestanden inlezen en tevens exporteren naar SQL-insert queries. Gaat niet helemaal automatisch goed, je zal er handmatig nog naar moeten kijken maar wellicht het proberen waard (trial versie is gratis).
Fantastisch! Ik heb met de shareware versie al enkele tables kunnen inlezen en geëxporteerd naar SQL formaat!

Het moeilijkste is nu uitzoeken wat waarvoor dient; sommige kolommen lijken compleet absurd, en sommige tabellen zijn ook echt bizar. Zo is er bvb een aparte met de gegevens van enkele Belgische ex-ministers die blijkbaar abonnee zijn (met adres en al! :) )

Prob is dat de software die ze gebruikten hier niet werkt, hoewel alles hier absoluut gezien onder dezelfde dir staat; maar dit is wel WinXP en zij hadden WinMe...
Ik denk dat het ook niet echt zelfgeschreven software is; ze voerden nl een batch bestandje uit met deze code:
code:
1
2
3
4
5
6
7
8
@echo off
rem cls
cd\
cd\dbase\cofena
dbase cofena
cd\
cls
exit

Het programma dbase wordt dus gewoon met de parameter cofena opgestart (dat is de naam van de dire en de database in kwestie), maar wanneer ik dat doe zegt hij (net zoals altijd als ik dbase opstart) ""System is not configured for current code-page". Als ik dan ok druk kan ik gewoon in het prog navigeren; maar toen ik het op de originele pc aan het werk zag, kwam er dan een cutom menu met knoppen voor "abonnee zoeken", "rekening toevoegen" etc...
Blijkbaar zijn die custom frontends een feature van dbase?

  • bigben04
  • Registratie: December 2001
  • Laatst online: 07-05 10:38
Als ik me niet vergis komt ME uit de Windows-branch van 95, 98 etc. In de autoexec.bat in (in elk geval) 98 en (volgens mij ook) 95 staan de volgende regels:
code:
1
2
mode con codepage prepare=((850) C:\WIN98\COMMAND\ega.cpi)
mode con codepage select=850

Wellicht kan je daarmee experimenteren om de frontend wel aan de praat te krijgen. Je zou natuurlijk ook ME kunnen installeren op een ouwe baggerPC om daarmee te kijken of het werkt, of je zou met de compatibility options kunnen spelen bij het starten van Dbase, of je zou VMWare kunnen gebruiken.

  • Bud_s
  • Registratie: Maart 2002
  • Laatst online: 25-05 18:29
Kijk ook eens of je in die dir bestanden met een extensie prg kan vinden. Dit kan duiden op clipper.

Als dat zo is kan je die dingen gewoon lezen met ee text editor (kladblok)

Je kan dit soort code verwachten (in dit geval een menu)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Set heading off
set status off
set safety off
set talk off
SET COLOR TO GR+/B, ,R
do while .T.
clear
?"                       B E S T E L L I N G E N"
?
?"               ---------- ****************** ------------"
?"                          ****************"         
?"                          ****************"   
?"                          tel. ****************"   
?"                          fax ****************"   
?
?"            1. Verwerken bestelling."
?"            2. Toevoegen bestellingen."     
?"               ----------------------------------------------"
?"            3. Verwijderen bestellingen op code."
?"            4. Wijzigen bestellingen op code."
?"               ----------------------------------------------"  
?"            5. Tonen van gegevens."                 
?"            6. Bekijken/verwijderen laatst ingevoerde record."
?"            7. Printmenu."
?"            8. Copieren van het bestand naar drive A: ."
?"            9. SNEL ZOEKEN." 
?"            0. Terug naar SHELL."
?
?"     Geef 't gewenste cijfer in.                      (C) ***"
?" (Let op: staat de CAPSLOCK aan?)"
clear all
set console off
wait to W
set console on
do while W<>"1".and.W<>"2".and.W<>"3".and.W<>"4".and.W<>"5".and.W<>"6"
.and.W<>"7".and.W<>"8".and.W<>"9".and.W<>"0"
set console off
wait to W
set console on
enddo
clear
do case
case W="1"
use bes    
do besbes
case W="2"
use bes     
do besapp
case W="3"
use bes      
do besdel   
case W="4"
use bes
do beswijz
case W="5"
use bes
do bestoon
case W="6"
do beskd.prg
case W="7"
use bes
do besprin
case W="8"
run copy c:******bes.dbf a:
case W="9"
run dbview bes.dbf
case W="0"
SET COLOR TO
QUIT

cancel
endcase
enddo
return


en keuze 2 geeft :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
SET HEADING OFF
SET SAFETY OFF
set date british
* INVOEREN VAN EEN NIEUW BESTELLING
set talk off
CLEAR
set bell off
set deleted on
set DEVICE to screen
store " " to W
do while W<>"K"
use BES       
GO BOTTOM
mnum=val(num)+1
**@ 1,1 SAY 'LAATST INGEVOERDE BESTELCODE ' + NUM
append blank
@ 3,1 say 'OPDRACHTGEVER: '
@ 3,40 say 'Verk.: ' get verk
@ 4,1 SAY 'Naam      ' get naam  
@ 5,1 say 'Voorvoeg  ' get voorvoeg
@ 6,1 say 'Voornamen ' get voornamen
@ 7,1 say 'Adres     ' get ADRES
@ 8,1 say 'Postcode  ' get POSTCODE PICTURE "XXXX XX"
@ 9,1 say 'Plaats    ' get plaats
@ 10,1 say 'Telefoon  ' get tel
@ 11,1 say 'Datum     ' get datum
@ 12,1 say 'BESTELLING: '         
@ 13,1 say 'Bedrijf   ' get bedrijf
@ 13,35 say 'Ordernr. ' get kltnr
* @ 13,63 say 'Code: ' get mnum picture "99999"
@ 15,1 say 'Aantal ' get aant
@ 15,14 say 'Artikel ' get art
@ 15,45 say 'Toev. ' get toev
@ 16,1  say 'Besteld J/N: ' get besteld
read
replace num with str(mnum,5)
CLEAR
?'1 = Nog Bon toevoegen.'
?'2 = Ik wil bovenstaande bon opnieuw invoeren.!'
?'3 = terug naar hoofdmenu.'
set console off
wait to W
set console on
do while W<>"1".and.W<>"2".and.W<>"3"
?"Type het juiste cijfer in!"
set console off
wait to W
set console on
enddo
CLEAR
do case
case W="1"
skip
case W="2"
go bottom
delete
PACK
skip
case W="3"
set date ansi
return
endcase
enddo
return

[ Voor 51% gewijzigd door Bud_s op 19-12-2003 15:15 ]


  • Joske Pauwels
  • Registratie: Februari 2001
  • Laatst online: 19-07-2016

Joske Pauwels

Stelt zich vragen...

Topicstarter
Hey, tnx voor de tips! Clipper is idd die frontend; ik ben nu al de PRG's aan het doornemen, maar het is moeilijk om te zien wat waarvoor dient gezien er nergens commentaar bij staat.

Welke PRG laadt hij eigenlijk default als een database geladen wordt? (een beetje zoals wat index.html voor webfolders is...)

Ik zal intussen ook eens met die code set experimenteren; stay tuned!

  • Bud_s
  • Registratie: Maart 2002
  • Laatst online: 25-05 18:29
zal waarschijnlijk de cofena.prg zijn (zie ook je batch script)

btw: ik doe heel af en toe nog wel eens wat met clipper, ik wil weleens naar de code kijken voor je.
Heb ik wel ook je de structuur van de tabellen nodig :)

Laat maar even weten, desnoods wil ik er wel mee stoeien evt met de database met (foo) gegevens.

[ Voor 3% gewijzigd door Bud_s op 20-12-2003 01:21 ]


  • Joske Pauwels
  • Registratie: Februari 2001
  • Laatst online: 19-07-2016

Joske Pauwels

Stelt zich vragen...

Topicstarter
Bud_s schreef op 20 december 2003 @ 00:20:
zal waarschijnlijk de cofena.prg zijn (zie ook je batch script)

btw: ik doe heel af en toe nog wel eens wat met clipper, ik wil weleens naar de code kijken voor je.
Heb ik wel ook je de structuur van de tabellen nodig :)

Laat maar even weten, desnoods wil ik er wel mee stoeien evt met de database met (foo) gegevens.

mail : zie profiel
Tnx! Check je mail maar...
Pagina: 1