German Problem mit großer Tabelle

Ich habe mir mal die Trial der Desktop 5er Version installiert, weil ich hier für die Arbeit ein Programm für unsere PDAs schreiben wollte.

Ich habe mich dabei zum Ausprobieren erst einmal an de "Account" Programm gehalten.

Allerdings habe ich scheinbar ein Problem mit dem freien Speicher.

Ich habe eine CSV-Datei mit 9 Spalten und max. 200 Zeilen.
Sobald ich mehr als 12-13 Zeilen einlesen lasse, kommt die Meldung, daß die Datei nicht gelesen werden kann, kürze ich sie ein, klappt alles Perfekt.

Ist dies eine Einschränkung der Demo-Version, oder an was liegt es? Oder gibts eine bessere Möglichkeit, mit so "großen" Datenmengen umzugehen?
 

specci48

Well-Known Member
Licensed User
Longtime User
Hallo Christian72D,

willkommen bei Basic4ppc :)

Die einzige Einschränkung der Demo-Version (Desktop) ist die fehlenden Compile Funktion, d.h. man kan keine (eigenständigen) .exe Dateien erzeugen. Bei der PocketPC Variante zählt die 30-Tage Frist. Ansonsten gibt es hier keine Einschränkungen.

Zu Deinem Problem:
Bei 9 Spalten sollten 200 Zeilen kein Problem sein, es sei denn, Du hast einen immens großen Dateninhalt pro Zelle. Ein Abbruch nach 12-13 Zeilen klingt daher sehr merkwürdig. Was steht denn z.B. in einer Zeile (d.h. den 9 Spalten) drin?
Zusatzfrage: Wieviel Hauptspeicher hast Du denn nach Aufruf von Basic4pp auf dem PocketPC noch frei?

Anmerkung:
Ich selbst verarbeite auf dem PPC problemlos eine .csv Datei mit 12 Spalten und ca. 250 Zeilen.

Eine "bessere" Möglichkeit zur Verwaltung von großen Datenmengen bietet Basic4ppc durch die Anbindung an SQLite. Diese Funktionaltät setzt allerdings das .Net CF2 voraus, standardmäßig benötigen Basic4ppc-Programme nur .Net CF 1.1.


specci48
 
Ich bin jetzt (leider?) nicht auf der Arbeit, sonst könnte ich dir mein Programm und die CSV mal schicken.
SQL scheidet aus, weil: das Programm soll hier bei uns zu Verrechnung von internen Zählern benutzt werden. Das Hauptprogramm, in dem alles verwaltet wird, ist extra für uns so umgeschrieben worden, daß es die einzelnen Ableserouten nach CSV exportiert (standarsmässig soll man den ganzen Kram mit Stift und Audsruck erledigen).
Als Daten fallen folgende Felder an:
1x String, Zählernummer, 6 Zeichen
1x String, Gebäude, 3 Zeichen
1x String, Etage, 10 Zeichen
1x Number, Zählerstand Neu
1x Number, Zählerstand Alt
1x String, Anmerkung, 20 Zeichen
1x String, Beschreibung, 40 Zeichen
1x Datum, String, 10 Zeichen

und evtl. noch

1 x Faktor, Number

An fehlerhaften Daten in der Tabelle kann es eigentlich auch nicht liegen, ich habe die Tabelle soweit eingekürzt wie es ging und dann die letzte Zeile manuell verdoppelt, und der Fehler trat auch auf.

Am fehlenden Speicher wird es wohl eher nicht liegen, bislang Teste ich das Programm noch ausschließlich auf dem Desktop, da ist es übersichtlicher es zu entwickeln.

Soll ich die die beiden Dateien evtl. Dienstag mal rüberschicken?
 

specci48

Well-Known Member
Licensed User
Longtime User
Deiner Datenstruktur nach sollte die Tabelle nun wirklich kein Problem sein. Und dass der Fehler auch noch auf der Desktop-Variante auftritt überrascht mich umso mehr. :confused:

Ich schaue mir Dein Programm gerne einmal an.
 

Peter

Member
Licensed User
Post bitte auch die erste 20 zeilen. Veilleicht stimmt doch etwas nicht damit.
 
Ich habe es mir etwas einfacher gemacht, ich habe mal das Programm und das Datenpaket zusamen auf meinen Server gepackt: Link

Zudem sind hier die ersten Zeilen der einzulesenden Daten:

Nr.;Gebäude;Etage;Neu;Alt;Anmerkung;Beschreibung;Datum
TW2248;Z24;KG;24012;23655;;Kfm. Ausbildung. R2501;23/01/2006
AL4499;Z24;KG;12198;12161;;Kfm. Ausbildung. R2501;23/01/2006
VE3254;Z24;KG;7799;7790;;Kfm. Ausbildung. R2501;23/01/2006
KL3421;Z24;KG;20063;19640;Pumpe defekt;Kfm. Ausbildung. R2501. Beh. 43;23/01/2006
KL3355;Z38;KG;14980;14894;;Rechnerzentrum / BlueChip. Beh. 73;23/01/2006
TW2318;Z38;KG;17082;16765;;Rechnerzentrum / BlueChip;23/01/2006
VE3286;Z38;KG;4205;4176;;;23/01/2006
TW2414;Z10;KG;1033;1011;;Alte Ausbildung / Backsteinbau. Treppenhaus;23/01/2006
ND1382;Z10;KG;49243;31158;;Alte Ausbildung / Backsteinbau. Gang rechts / Heizungsraum;23/01/2006
BW2004;Z99;KG;2110;2110;;Brauchwassernoteinspeisung;23/01/2006
BW2003;Z99;KG;4862;4862;;Brauchwassernoteinspeisung;23/01/2006
BW2166;Z99;KG;33510;33510;;Brauchwassernoteinspeisung;23/01/2006
BW2167;Z99;KG;25157075;24823515;;Brauchwassernoteinspeisung;23/01/2006
TW2251;Z23;EG;;2815;kein Zugang, verschlossen;;23/01/2006
TW2337;S39;EG;5592;5575;;Container linke Tür Südseite;23/01/2006
TW2249;Z05;EG;86;65;;Herrentoilette W;23/01/2006
KL3428;Z05;EG;15147;15058;;O / Beh. 103;23/01/2006
KL3307;Z05;EG;122;114;;;23/01/2006

Wäre Klasse, wenn IHR den Fehler finden würdet.
 

Peter

Member
Licensed User
Ich hab mir ihrem daten genau angesehen.
Es gibt leider doch fehlerhaften daten in der tabelle.
zum beispiel zeile 14: TW2251;Z23;EG;;2815;kein Zugang, verschlossen;;23/01/2006

Die viertem spalte soll ein nummer sein (1x Number, Zählerstand Neu), aber 'null' ist keiner. Das gleiche gibt es auch beim anderem zeilen.

Wenn sie die zeile zum beispiel TW2251;Z23;EG;0;2815;kein Zugang, verschlossen;;23/01/2006 machen, klappt es.

Die einfachste loesung (jetzt) ist die definition an zu passen im App_start, also

table1.AddCol(cString,"Zaehler",1,True) 'Account Number must be unique.
table1.AddCol(cString, "Gebaeude",1)
table1.AddCol(cString,"Etage",1)
table1.AddCol(cString,"Neu",1)
table1.AddCol(cString,"Alt",1)
table1.AddCol(cString,"Anmerkung",1)
table1.AddCol(cString,"Beschreibung",1)
table1.AddCol(cString,"Datum",1)


Wenn zie calculieren moechten met neu und alt ist es besser die fehlerhaften zeilen an zu passen und im programm standard werten zu geben an neu und alt (z.b. 0) wenn sie ein neue zeile machen.

Peter
 
Last edited:

specci48

Well-Known Member
Licensed User
Longtime User
Der Beschreibung von Peter gibt es nichts mehr hinzuzufügen...
... außer der Tatsache, dass ich um die Uhrzeit auch lieber Basic4ppc programmiert hätte, anstatt zu arbeiten ... ;)

specci48
 
Ja, DANKE, das wars. :)

Rechnen muß ich mit den Zahlen wirklich nicht, nur vergleichen welche größer ist, und das klappt soweit auch noch mit Strings.
 
Top