Ich versuche, meine Anwendung von ADO zu FireDAC zu migrieren. Ich benutze Microsoft SQL Server. Mein Datenbankserver wurde mit der Sortierung SENSITIVE CASE installiert und die Datenbank wurde mit der Sortierung INSENSITIVE CASE erstellt. Ich habe diese Konfiguration vorgenommen, weil meine Kunden diese Konfiguration haben. Aber als ich versuchte, zu FireDAC zu migrieren, suchen die FireDAC-Treiber (MSSQL) die Datenbanksortierung und ändern die Eigenschaft "Datenbankname" in Großbuchstaben. Danach haben viele Dinge nicht funktioniert, da der FireDAC den "Datenbanknamen" in Sysdatabase nicht gefunden hat. Kann ich diese Funktion deaktivieren, die die Eigenschaft "Datenbankname" ändert?Delphi Firedac - Case Sensitive Problem
Antwort
Ich finde es, dass FireDAC ansi Großbuchstaben Konvertierung verwendet, um auf die Datenbank zugreifen, was wiederum Probleme mit MSSQL verursacht. In meinem Fall war es türkisch. Ich fand die Lösung einfach. In OnBeforeConnect
von TFDConnection I verwendet:
Params.Database := TRUpperCase(Params.Database);
Wo TRUpperCase
eine Funktion ist, die ordnungsgemäß in Großbuchstaben türkischen Zeichen konvertiert (wie i bis i statt i bis I).
Ich denke, Sie suchen nach dem MetaCaseInsCat Verbindungsparameter. Versuchen Sie, Katalognamen Groß- und Kleinschreibung der automatische Erkennung deaktivieren und es bis zu sein, Groß- und Kleinschreibung:
...
FDConnection1.Params.Add('MetaCaseInsCat=True');
FDConnection1.Connected := True;
Dies ist keine direkte Antwort auf die OP, aber es kann zukünftige Programmierern wie mir helfen, die Frage hat mit Groß- und Kleinschreibung in FireDAC
Ich verwende FireDAC mit MSSQL. Um das 'LIKE' in einem TFDQuery Filter in einer nicht casesensitive Art und Weise zu nutzen: TFDQuery.FilterOptions
procedure TFDQuery_MyVersion.SetFilterText(const Value: string);
begin
FilterOptions := [TFilterOption.foCaseInsensitive];
inherited SetFilterText(TOldDatabaseSystemToMSSQL.Filter(Value));
end;
Haben Sie versucht, die FDConnection Eigenschaft 'MetaCaseIns' auf true zu setzen? – Copilot
Ja, aber hat nicht funktioniert. Als ich die Eigenschaft 'MetaCaseIns' auf 'true' gesetzt habe, hat die firedac-Komponente den Namen der Datenbank in Großbuchstaben geändert. Ich brauche, dass der Datenbankname wie getippt bleibt. – user3877647
Ich sende sofort einen Link zu diesem Thema an den Autor des FireDAC, ich hoffe, er wird etwas sagen. –