Welche Art ist es!

Kann 4, 2016 Admin Computer 0 3
FONT SIZE:
fontsize_dec
fontsize_inc

Die Perpetual Grün - Protokolleintrag # 8.1

Dieser Artikel erschien auf http://www.undu.com



Wie die Freuden erlaubt den Nutzern, Ad-hoc-Abfragen zu entdecken, ist es auch entdeckt, dass durch die Reaktion auf ihre Wahl nach der Tat, ist nicht immer eine Freude.



Wenn Sie nicht wissen, was die Spalten in der Abfrage enthalten sein, gibt es zwei Wege für den Umgang mit den Spalten nach der Tat. Die erste ist die Brute-Force, durch den Vergleich der tatsächlichen Feldnamen mit einer Liste aller möglichen Entscheidungen und entsprechend zu reagieren. Alternativ können Sie Informationen über den Typ des Feldes von Delphi zu erhalten, und schreiben Sie eine kleine Routine fest.



Aber es gibt einen Haken. Sie werden einige interne Konstanten wie Delphi ftSmallint, ftBoolean und ftString verwenden. Also, natürlich, wenn Sie Informationen erhalten möchten, wahrscheinlich fragen ObjectName.fieldType und sein verwirrt, wenn der Compiler rülpst und weigert sich weiterhin. Das ist, weil die Eigenschaft, die Sie stellen sollten ist der Datentyp. Ja, ich weiß, es ist verwirrend, warum die Konstanten können den gleichen DT als Eigentum bezeichnet nicht haben, aber diese Anomalien sind Artikel hier im Web geschrieben.



Sie können einige Dinge mit diesem Code zu tun, wenn Sie wissen, dass der Typ des Feldes ist eine Spalte. Sie können ein Ergebnis der Abfrage insgesamt und einige statistische Analyse. Zum Beispiel die Einrichtung eines Grill und eine Abfrage mit ihm verbunden. Lassen Sie die Abfrage ist eine Art Ad-hoc-Abfragen, mit allen Mitteln die Sie wollen. Mit einem Memo-Feld sitzt unter dem Grill. Schleife durch die Felder, Zählen Episoden von String-Felder, für insgesamt numerischen Feldern und der Produktion von True/False Gesamtstatistik von Boolean-Feldern. Fügen Zusammenfassung jeder Spalte als Zeile in der Notiz.



Mein Nutzung hat bei der Schaffung eines spezialisierten Tabellenkalkulation in Excel beteiligt, unter Verwendung von Komponenten XLSReadWrite aXolot Daten (verfügbar unter http // www.axolot.com/components/index.htm). Die Möglichkeit, die Bestellnummern, die manchmal alle Zahlen als String waren zu unterscheiden, jedoch erlaubt die korrekte links/rechts Rechtfertigung der Ergebnisse. Der Kern die Funktion, die es tut, ist unten aufgelistet



var

Row, Col Ganzes;

s string;

Start

// Nur fort, wenn Q ist aktiv und

if ((Q.active) und (Q.recordCount> 0))

dann beginnen

XLSW.Filename = 'C \ data \' eXLS.Text + + 'xls';

xlsW.OpenFile;

Q.first;

Row = 1;

Q.eof nicht einmal starten

// Schreiben Sie die Spaltenüberschriften mit dem Feldnamen

Col = 0 bis (Q.fieldCount - 1) zu tun

xlsW.WriteString (Col, 0.2, Fall (q.fields [col] .fieldname));

// Zyklus zwischen den Säulen, und exportieren Sie jede Zelle XLSReadWrite

Col = 0 bis (Q.fieldCount - 1) do begin

s = q.fields [Col] .asString;

// Die Eigenschaft Datentyp des Feldes Gebrauch, nicht Fieldtype !!!!!

// Denn das sind Elemente einer Menge enumarated, können Sie einen Fall auf ...

Wenn q.fields [Col] .dataType von

ftSmallint xlsW.WriteNumber (Col, Reihe, 1, StrToFloat (s));

ftWord xlsW.WriteNumber (Col, Reihe, 1, StrToFloat (s));

ftFloat xlsW.WriteNumber (Col, Reihe, 1, StrToFloat (s));

ftBCD xlsW.WriteNumber (Col, Reihe, 1, StrToFloat (s));

ftInteger xlsW.WriteNumber (Col, Reihe, 1, StrToFloat (s));

ftLargeInt xlsW.WriteNumber (Col, Reihe, 1, StrToFloat (s));

ftBoolean wenn (S) = Kontrollkästchen Großbuchstaben 'TRUE' true //

dann xlsW.WriteBool (Col, Reihe, 3, true)

else if 'false' Fall (S) = false //

dann xlsW.WriteBool (Col, Reihe, 3, false)

xlsW.WriteString andere (Col, Reihe 2, '');

// Alles andere ist eine Zeichenfolge, einschließlich der Termine

xlsW.WriteString andere (Col, Reihe, 2, S);

Ende;

Ende;

q.next;

Riga Riga + = 1;

Ende;

xlsW.closeFile;

Ende

andere showDlgOops ("Es gibt keine Daten, die exportiert werden! ');

Ende;



Wie weiß ich, das Rätsel zu identifizieren den Typ des Feldes ist eine beliebte Frage in den verschiedenen Newsgroups Delphi, ich hoffe, dass dies zu einer Lösung für Ihr Dilemma führen. Und ich hoffe, es wird Sie ermutigen, Ihren Benutzern die Möglichkeit geben, Ad-hoc-Abfragen. Ob Sie es mögen!



Gary Mugford

Idee Mechanic

Bramalea ON Canada

(0)
(0)

Kommentare - 0

Keine Kommentare

Fügen Sie einen Kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Zeichen übrig: 3000
captcha