| Autor |
Beitrag |
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Do 12.12.02 12:49
Hi,
folgendes Problem : Auf einem Formular habe ich ein DataSet. Auf diesem sollen jetzt, warum auch immer, zuerst Artikel angezeigt werden >= 100 und zum Schluß dann die von 1 bis 99. Jetzt frage ich mich, wie ich damit hantieren soll ? Wenn ich nun zwei DataSets nehme, jeweils mit SELECT ... WHERE nr<100 oder halt nr>=100, tja dann habe ich 2 Datenmengen, aber die sollen in oben geschilderter Weise angezeigt oder gedruckt werden, auf einem Formular. Einfach nur mit einer Trennlinie dazwischen. Alternativ könnte ich ja nur mit einer Datenmenge arbeiten und dann beim Anzeigen / Ausdrucken entscheiden, ob etwas angezeigt wird ? Hmm.
Gruß
Hansa
|
|
kiwicht
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Do 12.12.02 13:29
und wennste abwärts sortieren benutzt? müsste ja reichen. und dann halt 2 getrennte abfragen...
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Do 12.12.02 18:41
Hi kiwicht,
| Zitat: | | und wennste abwärts sortieren benutzt? |
Also noch einmal :
1. Habe ein Formular
2. Am Anfang sollen die Datensätze mit Nr. >=100 stehen. Hierbei natürlich nicht die höchste Nr. am Anfang  Sondern die kleinste, danach die zweitkleinste.
3. in einem zweiten Schritt sollen dann die Nummern KLEINER 100 erscheinen.
Diese Funktion brauche ich noch an weiteren Stellen. Deshalb bin ich ja am überlegen, ob ich eine zweite Datenmenge brauche, die ich dann wiederverwenden kann.
Gruß
Hansa
|
|
kiwicht
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Do 12.12.02 21:19
hm, also noch mal zum nachvollziehen:
101
102
103
104
...
----SEPERATOR
1
2
3
4
...
wenn dem so sei, dann würd ich mit einer 2 temporären db´s arbeiten.
und zwar aus der main-db alle filtern >= 100, die in die 1. db schreiben.
äquivalent dazu alle werte kleiner 100 in die 2. db
und dann beide gleichzeitig anzeigen bzw. mit dicken strich dazwischen drucken.
is zwar "etwas" umständlich, aber dürfte ohne weiteres hinhauen. ich wüsste jedenfalls nicht, wie ich das mit normalen befehlen und nur der main-db hinkriegen würde. geht meines erachtens halt auch nicht anders.
mfg
kiwicht
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Do 12.12.02 23:47
Hi,
so weit bin ich auch. Aber : Ein Select oder zwei ? Das ist hier die Frage.
Gruß
Hansa
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Fr 13.12.02 11:29
Hi!
Handelt es sich um ein Clientdataset? Wenn ja, kannst du doch einfach ein weiteres berechnetes Feld vom Typ Integer hinzufügen. In dieses Feld schreibst du bei DS >=100 eine 0, bei <100 eine 1. Anschliessend kannst die Eigenschaft IndexFields des CDS mit "MyCalcField, ID" versehen, so wird eine Sortierung nach deinen Wünschen erreicht. Die Select-Anweisung holt dann nur die Daten, die Sortierung wird lokal beim Client durchgeführt.
Cu,
Udontknow
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 13.12.02 11:51
Hi,
| Zitat: | | Handelt es sich um ein Clientdataset? |
Woran merk ich denn das ? Meinst Du vielleicht in einem Netztwerk ? Im Moment ist jedenfalls noch alles Einzelplatz.
| Zitat: | | Anschliessend kannst die Eigenschaft IndexFields des CDS mit "MyCalcField, ID" versehen |
Das da ist mir im Moment auch  zu hoch. Ich kämpfe im Moment sowieso noch mit diesen Datenmengen. Was passiert denn genau bei einem Join? Wie komme ich jetzt mit Delphi an welche Daten ran ? Bei mir sind es entweder zu viele oder zu wenige. Z.B. bin ich im Moment dabei, zu verschiedenen Artikeln Zusatzinformationen zu sammeln. Hierfür habe ich 2 weitere Tables. Diese Zusatzinformationen sollen aber nur erscheinen, wenn überhaupt etwas existiert. Also nochmals : Artikel muß immer kommen. Hinzu brauche ich aus 2 weiteren Tables Werte, sofern überhaupt welche da sind. Also 0-2 Daten aus einer anderen Table. Die Frage ist jetzt, wie und wo ich diese Datenmenge anordne und im Programm verwenden kann.
Gruß
Hansa
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Fr 13.12.02 12:01
Nene, ein Clientdataset ist eine Komponente, die du im Reiter Datenzugriff findest. Sie wird für Multi-Tier-Anwendungen eingesetzt, lässt sich aber auch für "kleinere" lokale Anwendungen verwenden. Für DBX kannst du dann auch das SimpleDataset einsetzen, es ist ein wenig einfacher zu handhaben.
Ein Join verbindet Datensätze aus 2 unterschiedlichen Tabellen, wobei dann aus 2 Datensätzen ein Datensatz wird, bei dem die linken Felder eben die Felder der ersten und die rechten Felder die Felder der zweiten Tabelle sind.
Cu,
Udontknow
|
|
neojones
      
Beiträge: 1206
Erhaltene Danke: 1
|
Verfasst: Fr 13.12.02 12:10
Hallo Udontknow,
ich muss korrigieren: Man kann mit einem JOIN auch zweimal dieselbe Tabelle verbinden.
Viele Grüße,
Matthias
_________________ Ha! Es compiliert! Wir können ausliefern!
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 13.12.02 12:21
Hi,
*volldeslobes*
| Udontknow hat folgendes geschrieben: | Ein Join verbindet Datensätze aus 2 unterschiedlichen Tabellen, wobei dann aus 2 Datensätzen ein Datensatz wird, bei dem die linken Felder eben die Felder der ersten und die rechten Felder die Felder der zweiten Tabelle sind.
|
Das da hab sogar ich verstanden.
Aber das hier noch nicht so ganz : Sind die Daten nach dem join aus Delphi-Sicht jetzt eine oder zwei Datenmengen ? Vermute, daß es nur eine ist. Das würde einiges erklären.
Wenn ich mir das ganze nochmal überlege, bräuchte ich eventuell einen Join über 3 Tabellen, geht das auch?
@neojones : ich weiß zwar nicht was Du jetzt da meinst oder wie das geht, aber ich ahne bereits, daß ich sowas an anderer Stelle brauchen werde,  Hast Du vielleicht ein Beispiel ?
Gruß
Hansa
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Fr 13.12.02 12:21
@Neojones:
Oh wirklich? Hmmm... Was macht das denn für einen Sinn? Hast du das schon mal praktisch angewendet?
@Hansa: Es ist dann eine Datenmenge, und ja, du kannst auch mehrere joins hintereinander machen.
Cu,
Udontknow
|
|