2014-07-25 12 views
11

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

+0

Haben Sie versucht, die FDConnection Eigenschaft 'MetaCaseIns' auf true zu setzen? – Copilot

+0

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

+0

Ich sende sofort einen Link zu diesem Thema an den Autor des FireDAC, ich hoffe, er wird etwas sagen. –

Antwort

0

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).

1

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; 
0

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;