![]() |
Datenbank: Perforce • Zugriff über: ODBC
Zugriff auf Perforce-Metadaten mit ODBC: Datenformatproblem?
Hallo!
Ich beschäftige mich momentan mit dem Zugriff auf die Metadaten von Perforce (Software Configuration Management System). Perforce bietet zum Zugriff eine ODBC-Schnittstelle. Der Zugriff mit z.B. Excel funktioniert problemlos. Als Beispiel nehme ich mal die Tabelle "users". Hier liefert Excel: Zitat:
- Neu Anwendung - dbgrid, datasource und adotable auf's Formular und alles schön verbunden. - Connectionstring zusammengeklickt und Tabelle gewählt => Verbindung funktioniert Im DBGrid wird jetzt folgendes angezeigt: Zitat:
Delphi-Quellcode:
Tja, nun sehe ich im Debugger '0'-Einträge: ... #0,#0 usw.
DataSource1.DataSet.FieldByName('user').AsString
Nullen kann ich nicht wirklich in einen String konvertieren. In der Perforcedokumentation steht als "Data Type" für diese Felder VARCHAR(254). Mache ich hier beim Zugriff etwas falsch? Warum geht es mit Excel und mit Delphi nicht? Ist es ein Formatproblem (unicode)? Ich habe leider keinen Ansatzpunkt. Es wäre schön, wenn mir jemand einen Tip geben könnte oder einen Link zu einem ähnlichen Thema. Veilen Dank und schönen Tag! StTüff |
Re: Zugriff auf Perforce-Metadaten mit ODBC: Datenformatprob
Hallo!
:gruebel: Ich bin mir nicht ganz sicher, wie ich die nicht ganz so rege beteiligung an diesem Thread werten soll. Da gibt es mehrere Möglichkeiten: - Die Antwort ist so banal, dass jeder denkt: "Da soll der mal selber drauf kommen". - Ich habe die Fragestellung nicht richtig/ausreichend formuliert und das Problem wird nicht klar. - Das Problem liegt an Perforce und damit kennt sich keiner aus. oder - Es kennt tatsächlich keiner eine möglich Lösung. Ich wäre über Eure Beteiligung sehr dankbar, auch wenn Ihr nur einen Hinweis (und nicht die endgültige Lösung) habt. :wink: Gruß und ansonsten schon mal schönes Wochenende, StTüff |
Re: Zugriff auf Perforce-Metadaten mit ODBC: Datenformatprob
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Stephan,
ich kann die Users problemlos auslesen. Freundliche Grüße |
Re: Zugriff auf Perforce-Metadaten mit ODBC: Datenformatprob
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Marabu!
Danke für Deine Hilfe. Kannst Du noch ein wenig mehr dazu sagen, was Du gemacht hast? Ich vermute, dass Du keine Perforceinstallation hast, oder? Du hast also vermutlich eine Datenbankdatei zum Testen erzeugt, die den angegebenen Datentyp enthält (die UDL-Datei war übrigens leider nicht mit dabei). Ist das soweit korrekt? Mit dieser Erkentnnis kann man dann eigentlich ausschließen, dass es am Datentyp liegt. Es muss also noch eine andere Besonderheit geben. Anbei habe ich mal mein Beispiel angehängt. Dieses funktioniert aber natürlich nur in Verbindung mit Perforce und der eingerichteten Reporterweiterung (Benutzer-DSN wie im Screenshot konfiguriert). Vielleicht hat ja jemand eine Perforceinstallation und kann das mal testen. Vielleicht erkennt auch jemand auf Grund der Einstellungen einen Fehler?! Gruß und vielen Dank, StTüff |
Re: Zugriff auf Perforce-Metadaten mit ODBC: Datenformatprob
Hallo Stephan,
ich hatte mir die aktuelle Perforce Trial nebst Reporting von der Hersteller-Seite gezogen und eine Standardinstallation durchgeführt. Ich hatte die UDL-Datei durch ein Aktivieren der Connection in einen String verwandelt, aber wohl schon vorher das Demo-Projekt gepackt, ich Schussel. Anbei die UDL-Datei. Ich hatte kein Password verwendet und der User muss natürlich auch angepasst werden. Schon beim Öffnen deines Projektes P4COMTEST sehe ich die Daten im Grid. Nach zwei Anpassungen am Quelltext (eine Methode und eine Funktion ohne Implementierung entfernt) lässt sich das Projekt bei mir übersetzen und ausführen. Keine Probleme. Freundliche Grüße |
Re: Zugriff auf Perforce-Metadaten mit ODBC: Datenformatprob
Hallo!
Bedeutet das, dass bei Dir auch mein Projekt so läuft, dass Du die Daten (also auch die Strings) angezeigt bekommst? :freak: Das würde mich völlig in Verzweiflung stürzen.... Dann gäbe es nur noch 2 Möglichkeiten: 1. Bei meinem Delphi ist was anders, oder 2. Dein Server läuft nicht im internationalised mode und meiner tut das vermutlich (muss ich zur Sicherheit noch mal prüfen). Ich bin diesbezüglich auch mit dem Support von Perforce in Kontakt. Mal sehen, ob ich herausbekomme, ob es ein "unicode-Problem" sein kann. Auf jeden Fall vielen Dank für Deine Bemühungen! Ich melde mich wieder.... StTüff |
Re: Zugriff auf Perforce-Metadaten mit ODBC: Datenformatprob
In manchen Fällen wird der Datentyp nicht korrekt durch die Treiberschichten bis nach oben in die Delphi VCL durchgereicht.
Statt ftString kommt ftBytes oder ftVarBytes an. Das (Standard-)DBGrid von Delphi ist nicht in der Lage, diesen Datentyp anzuzeigen. Dem lässt sich aber abhelfen; siehe Code-Library: ![]() |
Re: Zugriff auf Perforce-Metadaten mit ODBC: Datenformatprob
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Marabu!
Ich habe bei Deinem Projekt mal den Connectionstring gegen den ausgetauscht den ich verwende:
Code:
Leider wird dann in Deinem Projekt auch kein username usw. angezeigt (Anzeige im Grid immer "(BYTE)") und im String stehen lauter '#0'(vemutlich 254?)).
Provider=MSDASQL.1;Persist Security Info=False;User ID=sbaur;Data Source=Perforce;
Extended Properties="DSN=Perforce;UID=sbaur;" Hallo Shima! Deinem Tipp bin ich auch mal nachgegeangen und habe folgendes versucht:
Delphi-Quellcode:
Leider funktioniert auch das nicht. Vermutlich sind die Daten an der Stelle schon verloren (wie gesagt es sind lauter '#0'; siehe auch Screenshot anbei).
Edit1.text:=HexStringToStr(DataSource1.DataSet.FieldByName('user').AsString);
Es ist zum Verrückt werden :wall: Vielleicht hilft mir der Perforce-Support weiter. Wenn Euch noch was einfällt.... Gruß vielen Dank, StTüff |
Re: Zugriff auf Perforce-Metadaten mit ODBC: Datenformatprob
... ach ja, Marabu: Kannst Du bitte noch die UDL-Datei hochladen, ich vermute, dass hast Du vergessen.
Vielen Dank! StTüff |
Re: Zugriff auf Perforce-Metadaten mit ODBC: Datenformatprob
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Morgen,
hier die UDL-Datei. Bin gestern darüber gestolpert, dass die DP UDL-Dateien nicht mag. Als ODBC-DSN verwende ich den bei der Installtion bereit gestellten. Außer UserID und Password (bei mir leer) habe ich keine Angaben gemacht. Insbesondere setze ich keine Extended Properties. Vielleicht hast du gar keinen Konfigurationsfehler im Connection String gemacht. Wie Andreas schon geschrieben hat deutet die Anzeige (BYTE) darauf hin, dass der Treiber das VARCHAR-Feld nicht korrekt erkannt hat. Als Feldgröße solltest du den Wert 4 vorfinden. Du solltest mal mit einem anderen ODBC-Treiber testen. Meiner ist Version 2007.01.12.122. Freundliche Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:38 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 by Thomas Breitkreuz