Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL-String zu lang ? (https://www.delphipraxis.net/109123-sql-string-zu-lang.html)

Hansa 25. Feb 2008 18:38

Re: SQL-String zu lang ?
 
Wenn schon, dann heißt das "Frickel"-Lösung. :lol: :mrgreen: Ist es aber nicht. Siehe hier :

Delphi-Quellcode:
function TStrings.Add(const S: string): Integer;
begin
  Result := GetCount;
  Insert(Result, S);
end;

procedure TStrings.Append(const S: string);
begin
  Add(S);
end;
:shock: Und nu ? Jetzt kommst du. Das ist gereimt. :mrgreen:

omata 25. Feb 2008 18:48

Re: SQL-String zu lang ?
 
Da vertippt man sich mal, primitiver gehts ja wohl nicht.

Dieses Beispiel zeigst du mir jedes mal.

Hansa 25. Feb 2008 18:56

Re: SQL-String zu lang ?
 
Sorry, aber deine Intention verstehe ich immer noch nicht. Ja, was willst du uns denn sagen ? :mrgreen: Die paar Zeilen stammen übrigens aus der VCL und nicht von mir. Du machst mit dem append also tatsächlich nichts anderes als das "Frickel"-Add auszufüren, lediglich über einen Umweg. :zwinker: Sage doch einfach, dass es sich bei dem Append um einen Irrtum deinerseits handelt. :mrgreen:

marabu 25. Feb 2008 19:28

Re: SQL-String zu lang ?
 
Hallo Smiley,

Zitat:

Zitat von Smiley
... Man könnte jetzt alle Comboboxinhalte in eine Tabelle legen mit dem comboboxnamen dabei, dann muss ich aber jede Combobox einzeln füllen ...

wenn deine 38 DBComboBoxen nur zur Normalisierung der Feldwerte gedacht sind, dann würde ich das genau so machen. Ein Identity-Feld als PK, ein Diskriminator für den Feldnamen in der Tabelle KATALOGE und ein Feld zur Aufnahme der möglichen Werte für dieses Feld.

Das Befüllen der DBComboBox.Items wird nicht komplizierter, wenn du alle Feldwerte in einer einzigen Tabelle vorhältst. An Stelle des Öffnens jeder einzelnen der 38 Tabellen jetzt öffnest du dann nur noch eine Tabelle und über den Filter-Mechanismus selektierst du die relevanten Datensätze.

Eigentlich speichert man ja die Werte nicht direkt in der Tabelle KATALOGE, sondern verschlüsselt sie z.B. über eine DBLookupComboBox - um das Thema Datenmodellierung nochmal zu streifen.

Freundliche Grüße

omata 25. Feb 2008 20:41

Re: SQL-String zu lang ?
 
@Hansa: Meisterlampe, es handelt sich aber um keinen Irrtum PUNKT

Smiley 26. Feb 2008 11:25

Re: SQL-String zu lang ?
 
@marabu
Danke für den konstruktiven Kommentar.
Ich arbeite bereits mit DBLookupComboBoxen (hab mich im Namen verschrieben), jede ist mit jeweils einer eigenen Tabelle verbunden.
Die Tabellen der DBLookupComboboxen liegen natürlich nicht in der Tabelle Kataloge, wie sollte das gehen.
Von der Datenmodellierung ist es doch auch sinnvoller alle Combobox-Werte in einer Tabelle zu halten, wie vorgesehen, und nicht für jede Box eine eigene Tabelle anzulegen oder ?

marabu 26. Feb 2008 19:52

Re: SQL-String zu lang ?
 
Zitat:

Zitat von Smiley
... Von der Datenmodellierung ist es doch auch sinnvoller alle Combobox-Werte in einer Tabelle zu halten, wie vorgesehen, und nicht für jede Box eine eigene Tabelle anzulegen oder ?

Nur wegen dem Fragezeichen am Ende: Ja.

Smiley 27. Feb 2008 11:27

Re: SQL-String zu lang ?
 
@marabu
Noch ein paar Fragen zu Deiner Routine DuplicateRecord()

Die Abfrage if not ds.IsEmpty and ((pkValue = null) or ds.Locate(pkName, pkValue, [])) then

funktioniert aber doch nur dann, wenn ich in den Optionen die Auswertung der If Statments nicht auf vollständig stehen habe,
sonst würde doch der letzte Befehl (ds.Locate(pkName, pkValue, []) noch ausgeführt werden wenn ich in pkvalue null übergebe
und keine Werte in pkname und pkvalue eingetragen habe.
Sehe ich das so richtig ?

Ist der Befehl dsClone.Clone(ds); ein spezieller Access oder ADO Befehl oder gibt es clone auch allgemein ?

marabu 27. Feb 2008 11:51

Re: SQL-String zu lang ?
 
Das IF-Statement habe ich für die Standardeinstellung (Kurzschlussverfahren) geschrieben. Wenn du diese Einstellung (Direktive $B) nicht generell verwendest, dann kannst du das Statement lokal unter diese Direktive stellen.

Clone() ist eine ADO RecordSet-Methode.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:09 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz