![]() |
Datenbank: MySQL • Version: 5 • Zugriff über: MyDAC
Stringgrid und UTF8
Hallo,
ich habe folgendes Problem:
Delphi-Quellcode:
Wenn ich myaustr fix hineinprogrammiere klappt es.
myaustr:=Unicodestring(stringreplace(StringGrid3.Cells[1,CitNameIdx],'?','_',[rfReplaceAll])); // this is not working.
myaustr:='Birkmayer, G%'; // this case works fine WriteLogMemo('Ask for: '+myaustr); //MyQuery3.ParamByName('AU').AsString:=austr; MyQuery3.SQL.text := Format('SELECT cites, auname, id from aunames where aunames.auname like ''%s'' order by cites desc; ',[myaustr]); doch wenn ich es aus einem eingelesenen Stringgrid nehme nicht. Ist StringGrid3.Cells kein UNicode string? Bin für jeden Tip dankbar (verwende Delphi XE6) DANKE Walter PS: WIe ich bemerkte, kann es auch am EMS QImport3Wizard (version 3.9.5.3) liegen. Denn wenn ich ins Stringgrid fix den Namen hineinprogrammiere geht es auch. Obwohl im Stringrid sieht alles ok aus. (Umlaute und so) Sorry ich habe den Fehler schon, in dem XSL File waren die Nachnamen mit einem Blank und dann das KOmma. Immer wo anders gesucht und nix gefunden. DAnke |
AW: Stringgrid und UTF8
Moin...:P
Zitat:
Delphi-Quellcode:
... niemals visuelle Controls als Datenspeicher mißbrauchen. In deinem Falle bedeutet das nur Daten in Richtung Stringrid für die Anzeige und niemals in den Zellen lesen. In der Regel hängt man an den Listeneintrag das Datenobjekt an und liest darin.
myaustr:=Unicodestring(stringreplace(StringGrid3.Cells[1,CitNameIdx],'?','_',[rfReplaceAll]));
Beispiel: Im Datenobjekt ist das Geburtsdatum ein TDateTime. Je nach Ländereinstellung könnte man das im Grid anders darstellen. Im Datenobjekt bleibt es ein TDateTime. :zwinker: Wenn du mit dem Gridinhalt "rechnen" wolltest, müßtest du den String erst immer wieder zum TDateTime wandeln.
Delphi-Quellcode:
... LIKE ist in einer SQL Abfrage eher ungünstig. Da kann das DBMS keinen Index benutzen. Hier sollte man zumindes mal Überlegungen anstellen ob sich das durch ein optimiertes Datenbankdesign entfernen läßt.
MyQuery3.SQL.text := Format('SELECT cites, auname, id from aunames where aunames.auname like ''%s'' order by cites desc; ',[myaustr]);
Delphi-Quellcode:
... Richtig: SQL Anweisungen grundsätzlich mit Parametern.
MyQuery3.ParamByName('AU').AsString:=austr;
:hi: |
AW: Stringgrid und UTF8
Zitat:
Suche z.B. nach "Müller*" (bzw. im SQL "Müller%") stellt kein Problem dar da hier immer noch der Index verwendet werden kann. Aber gut das du den Fehler schon gefunden hast. Leerzeichen sind gemein das man sie oft auch nicht gleich erkennt. |
AW: Stringgrid und UTF8
Zitat:
|
AW: Stringgrid und UTF8
Zitat:
Bäumchen meistens ja und Hashs nö. LIKE auf ein INTEGER-Feld ist auch nicht so praktisch. Und das mit den Parametern wurde schon genannt, wobei das nicht nur auf SQL-Injection bezogen ist, denn hier
Delphi-Quellcode:
knallt es auch.
myaustr:='Meier''s'; // Meier's
|
AW: Stringgrid und UTF8
Schönen DANK an alle, wieder was gelernt!
Begzl: Stringgrid als Datenspeicher: Ich habe ein XLS in ein Stringgrid eingelesen damit ich dort auch die Daten sehen kann, daher nutze ich es. Schönen TAG noch. Walter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 Uhr. |
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