| Autor |
Beitrag |
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: So 29.09.02 16:19
Hi
hab ich doch eigentlich schon geschrieben:
| LCS hat folgendes geschrieben: | | Du musst dabei nur darauf achten, dass sich die Anzahl der Felder oder die Reihenfolge nicht verändert, weil sonst die anderen SQL-Anweisungen nicht mehr passen. |
Es ist vollkommen egal ob du schreibst
Quelltext 1:
| select Feld1, Feld2, Feld3, Feld4 from Tabelle |
oder
Quelltext 1: 2:
| select Feld1, Feld2, Feld3, Feld4 from Tabelle where Feld1 like 'A%' und tausend weitere Vergleiche |
weil sich dadurch weder die Anzahl noch die Reihenfolge der Felder in der Datenmenge ändert. Die generierten SQL Anweisungen für Insert, Update, Delete oder Refresh passen. Ob die Anzahl der Seätze eingeschränkt wird oder nicht, spielt keine Rolle.
Anders wäre es wenn du aber schreibst
Quelltext 1:
| select Feld4, Feld5, Feld1, Feld7 from Tabelle |
Hier werden im Select andere Felder geliefert als in den anderen SQL-Anweisungen aktualisiert oder geändert werden. Hier müssten jetzt auch die anderen SQL-Anweisungen entsprechend angepasst werden. Geht theoretisch natürlich auch, macht aber viel Arbeit.
Und in der Praxis siehts doch immer so aus, dass die benötigten Felder feststehen und nur die Menge der Sätze anhand der Where-Klausel eingeschränkt wird.
Werden unterschiedliche Felder benötigt ist es einfacher mehrere Datasets zu verwenden.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: So 29.09.02 17:05
Hi Lothar,
| Zitat: | | Werden unterschiedliche Felder benötigt ist es einfacher mehrere Datasets zu verwenden. |
Das muß einfacher gehen. Bsp.: es existieren 8 Preisgruppen. D.h. der Anwender hat Endkunden, Wiederverkäufer, Großkunden usw., wofür jeweils eine Preisgruppe kalkuliert und vorgesehen ist. Deine Logik ist mir schon klar, dann müßte ich 8 Datasets auf die Form legen, um alle zu berücksichtigen, die jeweils richtigen Felder auswählen und dementsprechend die SelectSQL anpassen (jeweils pro DataSet). Die Frage stellt sich dann allerdings wieder, welche Untermenge der Daten z.B. auf einer Preisliste erscheint.
Gruß
Hansa
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Mo 30.09.02 07:52
Hi Hansa
das wäre dann aber eher eine Frage des DB-Designs und kein Programmierproblem. Denn wenn ich die Preisgruppen in einer eigenen Tabelle halte und mir die notwendigen Daten über die Kategorie (Endkunden, Wiederverkäufer...) heranhole, dann hab ichs doch auch wieder nur mit einer Einschränkung der Datensätze zu tun. Und damit brauch ich auch wieder nur ein DataSet.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mo 30.09.02 17:09
Hi,
Habe noch eine Frage : wozu ist das SelectSQL (siehe Code) ein Tstring ?
Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.FormShow(Sender: TObject); begin DataModul.KGdatensatz.active := false; DataModul.KGdatensatz.SelectSQL [0] := 'SELECT * FROM KG8 WHERE nr = 88'; DataModul.KGdatensatz.active := true; end; |
So ungefähr geht es jetzt. Den Rest setze ich dann eben entsprechend in die WHERE-Klausel ein, also von Nr. bis Nr., alphabetisch usw. Die Query ist nicht mehr da!
Aber ACHTUNG !
Habe das mit FIBplus gemacht. Statt dem .active wird in IBX open und close benutzt. Glaube zumindest.
Ist jemand so verrückt wie ich, sich mit sowas einzulassen, Delphi, SQL,Interbase....Die Fallen lauern überall.
Für kleinere Sachen würde ich jedem abraten !!!
Gruß
Hansa
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Mo 30.09.02 17:18
| hansa hat folgendes geschrieben: |
Habe noch eine Frage : wozu ist das SelectSQL (siehe Code) ein Tstring ?
|
Damit du so ganz nebenbei alle Eigenschaften und Methoden von StringList nutzen kannst. Z. B. mit LoadFromFile den SQL-Text aus einer Datei laden.
| hansa hat folgendes geschrieben: |
Ist jemand so verrückt wie ich, sich mit sowas einzulassen, Delphi, SQL,Interbase....Die Fallen lauern überall.
Für kleinere Sachen würde ich jedem abraten !!!
|
Ich verwende für meine Projekte eigentlich nix anderes mehr. Wenn man die ganzen Anfangshürden mal genommen hat, lässt sich damit hervorragend arbeiten.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mo 30.09.02 17:43
Hi Lothar,
Aha !
| Zitat: | | Wenn man die ganzen Anfangshürden mal genommen hat, lässt sich damit hervorragend arbeiten |
Macht mir auch Spaß, wenn es irgendwie voran geht. Trotzdem warne ich jeden, für sein privates Musikarchiv und ohne Vorkenntnisse, mit sowas anzufangen.
Nächste Hürde sind jetzt die Foreign-Keys. In der DB sind sie zwar angelegt, aber wie mach ich jetzt mit Delphi weiter? Die mickrigen Kundengruppen sind soweit klar, das nächste sind halt die Kunden.
Habe was gesehen von ?MAS oder ID_MAS, sind das vordefinierte SQL-Wörter oder kann man die selber erfinden ?
Dann geht es nämlich weiter mit DBlookUp-Boxen, da heutzutage niemand mehr in der Lage ist, sich seine 5 Kundengruppen zu merken.
Zwischendurch versuche ich dann, ca. 2000 Kunden in die IB-DB reinzukriegen. Dazu muß das mit den geerbten Schlüsseln aus den Kundengruppen aber klar sein, dann kommen wieder die Transaktionen dran und dann kommen irgendwann mal die Druckausgaben dran und dann die Schnittstelle zu Excel und dann...und dann....und dann.....................
Gruß
Hansa
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mo 30.09.02 18:20
Hi Lothar,
das mit den Tstrings:
| Zitat: | | Damit du so ganz nebenbei alle Eigenschaften und Methoden von StringList nutzen kannst. Z. B. mit LoadFromFile den SQL-Text aus einer Datei laden |
Liege ich mit der Vermutung richtig, daß es hauptsächlich deshalb ist, ein komplettes SQL-Script in Delphi ablaufen zu lassen ?
Gruß
Hansa
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Di 01.10.02 06:27
Hi Hansa
ich denke mal, dass der Hauptgrund war, nicht auf einen String beschränkt zu sein. Aber natürlich lässt sich das auch dazu verwenden ein komplettes Script ablaufen zu lassen. Aber auch da stecken einige Tücken drin.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
|