Forum: VB.NET |
Thema:
ein paar Newbie-Fragen zum Verständnis von .NET |
Von:
Chris Nöther (
31.10.2006 14:31) |
Hallo allerseits,
ich habe mich jetzt mal am Rande ein wenig mit VB und ADO.NET und den Möglichkeiten damit bei uns im Unternehmen beschäftigt, dabei sind doch ein paar Fragen aufgetaucht. Vielleicht mag mir das ja hier jemand ein wenig erläutern.
1. Wir setzen hier den MS SQL-Server ein, das Frontend stellt Access. Da ist es relativ leicht, ein Formular mit den Kundendaten aufzumachen. Dasselbe in VB scheint dagegen nicht so einfach, allein wenn ich nur die Kunden öffne, schwillt das Programm im Speicher auf über 60MB an, und es dauert ziemlich lange, bis man da überhaupt was vom Programm sieht. Es wird wohl daran liegen, dass er erst alle Daten komplett in's Dataset lädt, wo sie ja im Grunde zu 99% nicht gebraucht werden. Das geht so natürlich nicht. Das Problem ist doch aber, dass ich eben am Anfang nicht weiß, welche Kunden bearbeitet werden sollen. Ich verstehe das so, dass ich am Anfang nicht gleich irgendeine Tabelle aufmachen darf, sondern diese gleich filtern muss. D.h., ohne eine erste Eingabe der User sehen die überhaupt keine Daten. Und so geht es dann weiter, erst wenn ich den zu bearbeitenden Kunden habe, kann ich dessen andere relevante Daten (Aufträge, Rechnungen, Bestellungen etc. etc. etc.) aufrufen. Das scheint mir relativ kompliziert zu implementieren sein. Zmumal, wenn ich es recht verstanden habe, ich dann nicht auf dieses supersimple Handling der Datenquellen während der Entwurfszeit zurückgreifen kann, wenn ich ohnehin alles zur Laufzeit, da parametrisiert, aufmachen muss. So kann es doch nicht sein, das muss doch einfacher gehen. Was übersehe ich?
2. Und selbst, wenn es dann im Ergebnis so läuft, wie sieht die Performance aus, wenn ich quasi für jeden neuen Kunden, den ich bearbeiten will, erst einmal eine verbindung aufmachen, über relativ komplizierte SQL-Anweisungen alle relevanten Daten in zig Tabellen einsacken und in's Dataset schaufeln und dann die Verbindung wieder schliessen muss? So mal eben durch die Kunden zu scrollen wird dann nicht mehr so möglich sein, oder?
3. Und was mir dabei einfällt, gibt es einen Mechanismus, der ADO.NET automatisch in der Datenquelle nach Daten suchen läßt, wenn er sie im Dataset nicht findet? Kann ich mir ja eigentlich nicht vorstellen, würde ja das Prinzip der speicherresidenten Datasets wieder aushebeln.
4. Und da wir gerade dabei sind, ich habe ein kleines Tool geschrieben, absolut nix großes, ein kleines Formular, dass alle paar Minuten in eine Tabelle auf dem Server schaut und, wenn da ein neuer Datensatz vorliegt, mir 'ne Meil schreibt. Die kompilierte EXE ist deutlich unter 200KB groß, aber im Speicher macht sich das Teil mit mittlerweile 29MB breit, nach 'nem Neustart sind's wenigstens "nur" 19MB. Da muss ich doch was falsch gemacht haben, nur was? Und wieso wächst der Speicherbedarf so eklatant mit der Zeit?
Ja, ich würde mich freuen, wenn mir jemand ein wenig behilflich sein könnte bei der Beantwortung dieser Fragen. Im Internet finde ich nichts konkretes dazu. Und na klar könnte ich mir ein Buch kaufen, was ich, wenn das VS für uns in Frage kommt, auch machen werde. Aber um überhaupt die Zweckdienlichkeit zu eruieren, will ich jetzt keine 50 Öhre ausgeben. Ich danke Euch für Eure Tipps ...
Chris
Betreff |
Von |
Datum |
|
|
AW: Daten laden beim Programmstart
1) das hast du richtig erkannt, Wenn du ne Datenbindung hast die ohne einschränkung auf eine Tabelle geht werden alle Daten in ein Dataset geladen. Das ist natürlich meist nicht nötig.<br><br>Ich würde... |
|
|
|
|
|
Hannes
Preishuber
|
01.11.2006 10:22 |
|
|
AW: Kunden updaten
um einen Kunden upzudaten musst du nur den Kundendatensatz laden und dann ein entsprechendes Update Kommando zurück an den SQL Server senden.<br>Das ist wesentlich weniger Traffci als bisher mit... |
|
|
|
|
|
Hannes
Preishuber
|
01.11.2006 10:23 |
|
|
Hannes
Preishuber
|
01.11.2006 10:24 |
|
|
Hannes
Preishuber
|
01.11.2006 10:26 |
|
|
Hannes
Preishuber
|
01.11.2006 10:26 |
|
|
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!