| Autor |
Beitrag |
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mo 25.11.02 09:49
Hi,
habe hier folgendes Problem : in einem Datensatz muß ich 3 Werte abspeichern und zwar jeweils 12mal, es geht um ein Jahr, wobei die 12 Monate einzeln aufgeführt werden müssen. Dafür würden sich also 3 Array [1..12] of... anbieten. Nun soll das ganze in SQL gemacht sein. Deshalb fing ich an, ein Script zu schreiben. Ohne Arrays müßte ich nun 36 Einzelfelder anlegen  , das muß ja nicht unbedingt sein. In der IBconsole habe ich nun einfach bei Array 12 eingeben und sieh an, das sieht ähnlich aus wie in Delphi. Die haben nur die zwei Punkte um 90 Grad gedreht,  so daß es so aussieht : integer [1:12] Aber wie komme ich nun z.B. an den April Wert ran ? Bzw. wie schreibe ich das in Delphi ?
Gruß
Hansa
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mo 25.11.02 10:01
Schau mal in der Hilfe nach der Funktion GetArrayField von TIBExtract.
Da hab ich was dazu gefunden, aber net ausprobiert, hattte das Problem noch nie.
Gruß
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Mo 25.11.02 10:02
Hi
| Hansa hat folgendes geschrieben: |
Aber wie komme ich nun z.B. an den April Wert ran ? Bzw. wie schreibe ich das in Delphi ?
|
Mit SQL einfach mit Feldname[4]. Mit Delphi gar nicht.
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 25.11.02 11:59
Hi,
bin immer noch dabei Daten zu konvertieren.
Quelltext 1: 2:
| FOR j := 1 TO 12 DO BEGIN StatDataSet.FindField ('MENGE ' + ArrayInd (j)).AsInteger := 1{StrToInt (copy (zeile,p,10))}; |
Das hier haut aber nicht hin. Hierbei ist ArrayInd eine Funktion, die mir z.B. "Menge [1]" liefert:
Quelltext 1: 2: 3: 4:
| FUNCTION ArrayInd (i : integer) : string; BEGIN ArrayInd := '[' + IntToStr (i) + ']'; END; |
In FindField steht dann auch richtig drin : Menge [1] !
Dann kommt genau an dieser Stelle eine Exception. Und das wars dann.  Davor füge ich noch 10 andere Felder ein. Das scheint zu funktionieren.
Gruß
Hansa
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Mo 25.11.02 12:17
Hi
| Hansa hat folgendes geschrieben: |
Dann kommt genau an dieser Stelle eine Exception. Und das wars dann.
|
Verständlich, denn in deiner Delphi-Datenmenge gibts ja kein Feld Menge[1], sondern nur das Array Menge. Und das wird von Delphi nicht unterstützt (Zumindest nach meinem Kenntnisstand bis IB 6 und D6). Bis jetzt sind alle Versuche auf solche Arraydaten aus Delphi zuzugreifen gescheitert. Wir hatten die Diskussion darüber schon mal ( hier).
IBExtract liefert nur Metadaten aus der Datenbank. Damit lässt sich leider nix anfangen.
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 25.11.02 13:00
Hi,
| Zitat: | Damit lässt sich leider nix anfangen.
|
Das würde bedeuten, daß man die Arrays vergessen kann. Ja, an den alten Thread hab ich gar nicht mehr gedacht, der heißt ja auch ganz anders.  Damals habe ich das Array zerlegt. Das Array von jetzt ist aber viel größer. Oje und ich kanns nicht als Array verwenden.
Gruß
Hansa
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mo 09.12.02 15:47
Hi,
das hier kann ich so nicht im Raum stehen lassen :
| LCS hat folgendes geschrieben: |
Verständlich, denn in deiner Delphi-Datenmenge gibts ja kein Feld Menge[1], sondern nur das Array Menge. Und das wird von Delphi nicht unterstützt (Zumindest nach meinem Kenntnisstand bis IB 6 und D6). Bis jetzt sind alle Versuche auf solche Arraydaten aus Delphi zuzugreifen gescheitert.
|
Ich hatte das Thema schon abgehakt.  Aber am Wochenende habe ich einen Artikel (sogar auf Deutsch) über FIBplus gelesen (was ich im Moment benutze).
Hier schreibt der Entwickler selbst lapidar folgenden Satz :
| Zitat: | | Dies heißt, daß der Entwickler...auf alle Fähigkeiten von Interbase zugreifen kann: ....,besondere Interbase Features (beispielsweise von Array-Feldern)... |
Aber das wars denn schon. Im Text geht er nicht weiter darauf ein (habe ihn übrigens nur in Papierform).  Das hat mich ja dann doch etwas neugierig gemacht. Da ist doch tatsächlich sogar eine Demo, wie ein solches Array in Delphi zu behandeln ist.
Hier ein Teil aus der DFM-Datei :
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: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73:
| object ArrayDataSet: TpFIBDataSet Database = DataModule2.Database Transaction = DataModule2.Transaction Options = [poTrimCharFields, poRefreshAfterPost, poStartTransaction, poAutoFormatFields] BufferChunks = 32 CachedUpdates = False UniDirectional = False UpdateRecordTypes = [cusUnmodified, cusModified, cusInserted] UpdateSQL.Strings = ( 'UPDATE JOB SET ' ' JOB_TITLE = ?JOB_TITLE,' ' JOB.JOB_GRADE=?JOB_GRADE,' ' JOB.JOB_COUNTRY=?JOB_COUNTRY,' ' LANGUAGE_REQ = ?LQ' ' WHERE ' ' JOB_CODE = ?OLD_JOB_CODE' ' and JOB_GRADE = ?OLD_JOB_GRADE' ' and JOB_COUNTRY = ?OLD_JOB_COUNTRY') DeleteSQL.Strings = ( 'DELETE FROM JOB' ' WHERE ' ' JOB_CODE = ?OLD_JOB_CODE' ' and JOB_GRADE = ?OLD_JOB_GRADE' ' and JOB_COUNTRY = ?OLD_JOB_COUNTRY') InsertSQL.Strings = ( 'INSERT INTO JOB(' ' JOB_CODE,' ' JOB_GRADE,' ' JOB_COUNTRY,' ' JOB_TITLE,' ' LANGUAGE_REQ' ')' 'VALUES(' ' ?JOB_CODE,' ' ?JOB_GRADE,' ' ?JOB_COUNTRY,' ' ?JOB_TITLE,' ' ?LQ' ')') RefreshSQL.Strings = ( 'SELECT' ' JOB.JOB_CODE,' ' JOB.JOB_GRADE,' ' JOB.JOB_COUNTRY,' ' JOB.JOB_TITLE,' ' JOB.LANGUAGE_REQ[1] LQ1,' ' JOB.LANGUAGE_REQ[2] LQ2' 'FROM' ' JOB JOB' ' WHERE ' ' ( ' ' JOB.JOB_CODE = ?OLD_JOB_CODE' ' and JOB.JOB_GRADE = ?OLD_JOB_GRADE' ' and JOB.JOB_COUNTRY = ?OLD_JOB_COUNTRY' ' )') SelectSQL.Strings = ( 'SELECT' ' JOB.JOB_CODE,' ' JOB.JOB_GRADE,' ' JOB.JOB_COUNTRY,' ' JOB.JOB_TITLE,' ' JOB.LANGUAGE_REQ[1] LQ1,' ' JOB.LANGUAGE_REQ[2] LQ2' 'FROM' ' JOB JOB' 'ORDER BY 1,2,3') AfterPost = ArrayDataSetAfterPost DefaultFormats.DateTimeDisplayFormat = 'dd.mm.yyyy' AllowedUpdateKinds = [ukModify, ukDelete] Container = DataModule2.DataSetsContainer1 Left = 304 Top = 200 end |
Wer die komplette Bibliothek mal haben will (einzige Einschränkung : Beim Programmstart kommt ein Fenster "Thank You for evaluating...") :
www.devrace.de
Leider kann ich mit dem ganzen so noch nichts anfangen. Compiliert krieg ich das Bsp. auch nicht, aber deswegen erwarte ich heute noch eine eMail.
Gruß
Hansa
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Di 10.12.02 10:27
Hi
Mittels SQL auf das Array zugreifen geht schon, aber auch in der Variante hast du ja als Ergebnis wieder einzelne Felder in deiner Datemenge.
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| SELECT JOB.JOB_CODE, JOB.JOB_GRADE, JOB.JOB_COUNTRY, JOB.JOB_TITLE, JOB.LANGUAGE_REQ[1] LQ1, JOB.LANGUAGE_REQ[2] LQ2 .... |
Das liefert mir ja die Felder als LQ1 und LQ2, auf die ich wieder einzeln zugreifen muss.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Di 10.12.02 11:15
Hi Lothar,
älteres Posting :
| Zitat: |
Verständlich, denn in deiner Delphi-Datenmenge gibts ja kein Feld Menge[1], sondern nur das Array Menge |
neues Posting :
| Zitat: | Das liefert mir ja die Felder als LQ1 und LQ2, auf die ich wieder einzeln zugreifen muss.
|
Letzteres wäre doch genau das was ich suche ! Im Moment habe ich 30 Einzelfelder als DECIMAL (15,2) angelegt. Von der Logik her sind das 3 Spalten mit je 10 Zeilen. Das würde doch viel übersichtlicher in einem Array gehen. Wie gesagt, es geht um Preisgruppen. Jede Zeile entspricht der beim Kunden hinterlegten Preisgruppe. Dort steht dann praktisch drin, welche Zeile mit Preisen für den Kunden vorgesehen ist
Auf jeden Fall wäre es einfacher dies so zu erledigen (sinngemäß) :
preis := ArtikelTable [kunde.preisgruppe];
anstatt :
Quelltext 1: 2: 3: 4: 5:
| CASE kunde.preisgruppe OF 1: preis := ArtikelTablePreisgruppe1; ... 10: preis := ArtikelTablePreisgruppe10; END; |
Versteh ich das jetzt nicht, oder muß ich vor Weihnachten doch noch in den Media-Markt gehen ?
Gruß
Hansa
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Di 10.12.02 11:44
Hi
was nütz mir den in der Datenbank ein Array, das ich beim Lesen zuerst in einzelne Felder umwandle, dann in meinem Programm die einzelnen Felder anspreche und beim Schreiben mit SQL wieder in das Array übertrage?  Der einzige Vorteil besteht darin, dass ich in der Datenbank eben ein Array habe. Der Vorteil für mich bei der Programmierung ist gleich Null, ich habe sogar noch mehr Aufwand als ohne Array mit Einzelfeldern. Das war das was ich meinte.
Sinn bringts eigentlich nur, wenn ich sowohl mit SQL, als auch mit Delphi direkt auf die Elemente des Arrays zugreifen könnte. Und genau das geht halt leider nicht.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Di 10.12.02 12:36
Hi,
steh wahrscheinlich doch aufm Schlauch oder wir reden aneinander vorbei. In einem solchen Forum ist so etwas auch schwer zu behandeln.
| Zitat: | | Sinn bringts eigentlich nur, wenn ich sowohl mit SQL, als auch mit Delphi direkt auf die Elemente des Arrays zugreifen könnte. Und genau das geht halt leider nicht. |
Deine Antwort war für mich etwas zu kurz. Willst Du darauf hinaus, daß es keine Funktion in der Art FieldByName für Arrays gibt? Hab ich noch gar nicht dran gedacht  Wenns die standardmäßig nicht gibt, bist Du dann sicher, daß die von FIBplus nicht eine solche gebastelt haben ? Ich konkretisiere noch einmal die Frage : Angenommen in der DB liegt ein Array mit 10 Feldern. Ich brauche den Wert aus Feld 5. Komme ich an diesen Wert mit einem SQL-Befehl in der Weise ran, daß ich ihn in einem Delphi Programm verwenden kann ? Ja oder Nein ?
Nach dem was Du sagst, kommt wahrscheinlich die Antwort Nein, aber ich kann nichts dafür, selbst wenn es nervt.  Muß nachhaken, zumindest sofern ich nicht ungefähr weiß woran es liegt.
Leider scheint sich sonst im Forum niemand außer Dir und mir mit solchen Fragen zu beschäftigen. Naja, schließlich frage ich ja zumindest nicht, wie ich das Aussehen eines Labels verändern kann.
Gruß
Hansa
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Di 10.12.02 13:17
Hi
| Zitat: |
Willst Du darauf hinaus, daß es keine Funktion in der Art FieldByName für Arrays gibt?
|
Ja.
| Zitat: |
Wenns die standardmäßig nicht gibt, bist Du dann sicher, daß die von FIBplus nicht eine solche gebastelt haben ?
|
Nein, bin ich nicht.
| Zitat: |
Angenommen in der DB liegt ein Array mit 10 Feldern. Ich brauche den Wert aus Feld 5. Komme ich an diesen Wert mit einem SQL-Befehl in der Weise ran, daß ich ihn in einem Delphi Programm verwenden kann ? Ja oder Nein ?
|
Du kommst schon ran. Aber nur wenn du das Array mit SQL in Einzelfelder aufdröselst. Mal angenommen es gibt so eine Tabelle:
Quelltext 1: 2: 3: 4:
| ... AR_ID integer, AR_PREIS numeric(9,4) [5] ... |
Jetzt verwendest du eine Query oder ein IBDataSet oder sonstwas um die Daten abzurufen. Schreibst du als Select-SQL nun:
Quelltext
hast du die A...karte. Das Array wird als solches geliefert und Delphi kann damit nix anfangen. In dem Fall hätte deine Datenmenge zwei Spalten. Dass die zweite Spalte ein Array ist, bleibt Delphi verborgen.
Alternativ könntest du als Select-SQL schreiben:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| SELECT AR_ID, AR_PREIS [1] as P1, AR_PREIS [2] as P2, AR_PREIS [3] as P3, AR_PREIS [4] as P4, AR_PREIS [5] as P5 from AR |
Damit sorgt deine SQL-Anweisung zwar dafür, dass die einzelnen Array-Elemente in deinem Programm sichtbar sind, aber nun hast du eine Datemenge mit sechs einzelnen Felder aus denen du wieder das einzelne selbst raussuchen musst.
Für dein Delphiprogramm macht es also keinen Unterschied ob in der Tabelle die Werte in Form eines Arrays oder in Form von Einzelfeldern gespeichert sind, da du sowieso immer auf die Einzelfelder zugreifen musst.
Einen Sinn macht die Sache, wenn du innerhalb des Programms nur einen Wert aus dieser Menge brauchst und du das bereits in der SQL-Abfrage selektieren kannst:
Quelltext 1:
| 'SELECT AR_ID, AR_PREIS [' + IntToStr(Preisgruppe) + '] as Preis from AR' |
Das ist natürlich wesentlich eleganter als wenn du mit Einzelfeldern arbeitest. Aber mal angenommen es wären Einzelfelder in der Tabelle, dann stellt sich das ja innerhalb deines Programms auch wieder als ein Array von Feldern in den Datenmenge dar. In dem Fall würdest du mit
Quelltext
alle Felder abrufen und dann in deinem Programm mittels Index das richtige raussuchen:
Quelltext 1:
| Preis := Datenmenge.Fields[Preisgruppe].AsCurrency; |
So oder so ist es leider nix Halbes und nix Ganzes. Ohne den direkten Zugriff auf die Elemente des Arrays, lässt sich das nur eingeschränkt einsetzen. Das ist ungefähr so, als wärst du mit ner halbnackten Traumfrau in einem Zimmer eingesperrt aber zwischen euch ist ne Glasscheibe
| Zitat: |
Nach dem was Du sagst, kommt wahrscheinlich die Antwort Nein, aber ich kann nichts dafür, selbst wenn es nervt. Muß nachhaken, zumindest sofern ich nicht ungefähr weiß woran es liegt.
|
Es nervt nicht  Und ich kann dich auch absolut verstehen, denn ich hab bei dem Problem mit den Arrays schon genauso Nerven gelassen.
| Zitat: |
Naja, schließlich frage ich ja zumindest nicht, wie ich das Aussehen eines Labels verändern kann.
|
Uff. No Comment.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Di 10.12.02 13:41
Hi,
| Zitat: | . Das ist ungefähr so, als wärst du mit ner halbnackten Traumfrau in einem Zimmer eingesperrt aber zwischen euch ist ne Glasscheibe
|
Tja, das wäre wirklich Sch.... Dann leb ich lieber mit den halben SQL-Arrays.  Aber ich lasse ja nichts unversucht, diese Glasscheibe wegzukriegen.  Im Prinzip wärs mir ja fast schon Recht, es ginge nicht. Also das mit den Arrays ! Dann bräuchte ich nichts mehr zu ändern. Aber auf lange Sicht wäre es besser, jetzt alles richtig zu machen, als zum Schluß alles wieder zu ändern. Die Einzelheiten lese ich mir heute mittag mal durch.
Gruß
Hansa
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Di 10.12.02 19:31
Hi,
| Zitat: |
Einen Sinn macht die Sache, wenn du innerhalb des Programms nur einen Wert aus dieser Menge brauchst und du das bereits in der SQL-Abfrage selektieren kannst:
|
na gut, endlich konnte ich Dein Statement mal lesen. Glaube zu wissen, worauf Du hinaus willst. Aber das geht wahrscheinlich mehr um die Grids, die ich für diesen Fall nicht brauche. Es geht um die Preisfindung oder um Preislisten.
Also: Preisliste für Kunden-Preisgruppe 5 oder 8 oder sonstwas. Bei jedem Artikel soll die entsprechende PG gedruckt werden.
Ich glaube, dafür ist das Array besser. Ein Grid wäre in diesem Fall die Ausnahme, deshalb würde ich lieber die Felder in die DB legen.
| Zitat: | | Das ist natürlich wesentlich eleganter als wenn du mit Einzelfeldern arbeitest. |
Eben. Zudem geht es auch um die Preisfindung ! Da gehts um keine Datenmengen, sondern um einzelne Artikel.
Was Du meinst, ist folgendes : (bitte notfalls korrigieren oder kommentieren) mit SELECT * FROM ... kriege ich eine Datenmenge. In dieser sind integer, char oder Arrays enthalten. ABER : an das ART [5] Feld komme ich so nicht dran, um z.B. ALLE Array-Felder in einem grid anzuzeigen ! Trotzdem komme ich an die Unterfelder dran, falls nötig. Brauche ich trotzdem das ganze als Grid, muß ich das eben gesondert behandeln.
Gruß
Hansa
P.S.: Ist wirklich nicht ganz einfach.
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Mi 11.12.02 09:14
Guten Morgähn
| Zitat: |
SELECT * FROM ... kriege ich eine Datenmenge. In dieser sind integer, char oder Arrays enthalten. ABER : an das ART [5] Feld komme ich so nicht dran, um z.B. ALLE Array-Felder in einem grid anzuzeigen !
|
Genauso isses.
| Zitat: |
Trotzdem komme ich an die Unterfelder dran, falls nötig.
|
Ja, mit einer Abfrage, welche dir einzelne Felder liefert.
| Zitat: |
Brauche ich trotzdem das ganze als Grid, muß ich das eben gesondert behandeln.
|
Ja, ebenfalls Abfrage der Einzelfelder. Ist dann zwar relativ Schreibaufwändig, wenn du ein Array mit 10 oder mehr Elementen mit Alias in die SQL reinschreiben musst, aber das geht halt nicht anders.
Das Betrifft allerdings nicht nur die Darstellung im Grid sondern auch in allen anderen Steuerelementen von Delphi bzw. irgendwelchen Report-Tools.
| Zitat: |
P.S.: Ist wirklich nicht ganz einfach.
|
Wenns einfach wär, wär's langweilig
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mi 11.12.02 12:25
Hi,
ich hab mir jetzt das nicht existierende Programm nochmals angesehen.  Ich brauche an über 20 Stellen einen einzelnen Preis. Ein Grid o.Ä. brauche ich 1mal (wenn überhaupt). Im Prinzip brauch ich das nur im Falle einer Übergabe von Daten an Excel. Aber ich glaube, dann müßte ich das Grid sowie wieder auseinander nehmen, also wäre es kein Vorteil.
Die Preisfindung läuft folgendermaßen : Es gibt Kunden, die kooperieren, die kriegen im Prinzip den Einkaufspreis. Andere kriegen Wiederverkäuferpreis, andere bezahlen den regulären Preis usw. Die Preise differieren also doch stark. Deshalb werden Preisgruppen angelegt, in die die Kunden zunächst einmal eingeordnet werden. Ist ein blöder Hund dabei, der anders behandelt werden will bzw. muß, fällt er aus diesem Schema und kriegt auf diesen "Normalpreis" einen Rabatt, oder einen Sonderpreis. Dafür wäre dann sowieso eine andere Table zuständig. Steht der Preis fest und es wird eine Rechnung geschrieben, so enthält diese den zum Zeitpunkt der Lieferung gültigen Preis, der dann in der Rechnungs-Table gespeichert wird.
Bei dem Thema mit Excel und Co. habe ich sowieso vor, dies durch Export der Daten direkt aus der DB zu bewerkstelligen. Tja, dann müssen sich diejenigen, die so etwas brauchen, eben mit einer 100spaltigen Tabelle rumschlagen.
Was Reports und so betrifft : Für diesen Zweck brauche ich wiederum nur ein Element des Arrays. Z.B. falls jemand kommt und sagt : "Druck mir mal ne Preisliste aus". Die wird dann für seine Preisgruppe gedruckt, wobei ich diese halt nur eingeben müßte.
Ach so, nochwas : Ich bin sowieso kein Freund von "SELECT * FROM..." In meinem Fall hier würde das bedeuten, daß ich 30 Felder selektiere, von denen ich nur 3 brauche. Im Falle von Stammdaten sieht das schon anders aus, da brauche ich wohl oder übel alle Felder.
Deshalb jetzt noch eine Frage : Seh ich das richtig, daß der Server belastet wird, wenn ich einen ganzen Datensatz lese anstatt z.B. einem Einzelfeld ?
Gruß
Hansa
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Mi 11.12.02 12:38
Hi
Die Antwort ist ein eindeutiges Jain. Wenn du mittels SQL aus 50.000 Datensätzen einen raussuchst ist es völlig egal ob nur eine oder alle Spalten brauchst. Die Serverbelastung ist das Suchen.
Für die Netzwerklast ist es allerdings nicht egal, denn wenn du nur ein Datenfeld anforderst, werden halt weniger Daten übertragen.
Bei sehr grossen Datenbanken tendiere ich eher dazu, alle notwendigen Daten abzurufen um auf Kosten der Netzwerklast die Serverbelastung niedriger zu halten.
In einer Umgebung mit einer kleineren Datenbank aber sehr vielen Zugriffen kann das schon wieder ganz anders aussehen.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
|