Situatie:
Er zijn 3 csv-bestanden met de volgende indelingen:
naw.csv (nummer;naam;straat;postcode;plaats)
oudnummer.csv (nummer;oudnummer)
bank.csv (nummer;banknaam;bankrekening)
Deze drie bestanden moeten uiteindelijk als een text-bestand in de volgende indeling eruit komen:
debiteur.txt (nummer;oudnummer;naam;plaats;bankrekening)
Tot nu toe heb ik het volgende:
Op de //...... doe ik dus wat met de data die ik uitlees uit naw.csv. Ik zit alleen vast.
Als ik bijvoorbeeld bij data[0][1] aankom (het eerste nummer) dan wil ik daar graag het oude nummer uit bestand oudnummer.csv bij hebben.
Ik heb zelf al een formule gemaakt die het bestand oudnummer afloopt op zoek naar nummer en het oude nummer retourneert, maar dit is heeeeel erg traag aangezien het gaat om meer dan 22000 debiteuren. (dan zou hij voor iedere debiteur weer een bestand met 22000 regels af moeten lopen, vandaar de traagheid)
Kan iemand een voorzet geven?
Er zijn 3 csv-bestanden met de volgende indelingen:
naw.csv (nummer;naam;straat;postcode;plaats)
oudnummer.csv (nummer;oudnummer)
bank.csv (nummer;banknaam;bankrekening)
Deze drie bestanden moeten uiteindelijk als een text-bestand in de volgende indeling eruit komen:
debiteur.txt (nummer;oudnummer;naam;plaats;bankrekening)
Tot nu toe heb ik het volgende:
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
| #include <iostream>
#include <iomanip>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
int main()
{
ofstream uitvoer( "debiteur.txt" );
ifstream in("naw.csv");
vector < vector <string> > data;
string element, delimiters = ";\n\r";
int row = 0;
char ch;
data.push_back( vector <string>() );
while( in.read( (char*)&ch, 1 ) )
{
if( delimiters.find_first_of(ch) == delimiters.npos )
{
element += ch;
}
else
{
if( ch != '\r' )
{
data[row].push_back( element );
element = "";
if( ch == '\n' )
{
data.push_back( vector <string>() );
row++;
}
}
}
}
if( element.size() > 0 )
data[row].push_back( element );
in.close();
for( unsigned int x = 0; x < data.size(); x++ )
{
for( unsigned int y = 0; y < data[x].size(); y++ )
{
//................................
}
}
return 0;
} |
Op de //...... doe ik dus wat met de data die ik uitlees uit naw.csv. Ik zit alleen vast.
Als ik bijvoorbeeld bij data[0][1] aankom (het eerste nummer) dan wil ik daar graag het oude nummer uit bestand oudnummer.csv bij hebben.
Ik heb zelf al een formule gemaakt die het bestand oudnummer afloopt op zoek naar nummer en het oude nummer retourneert, maar dit is heeeeel erg traag aangezien het gaat om meer dan 22000 debiteuren. (dan zou hij voor iedere debiteur weer een bestand met 22000 regels af moeten lopen, vandaar de traagheid)
Kan iemand een voorzet geven?