Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Kleines Tool: SQL - TableToClass (https://www.delphipraxis.net/197846-kleines-tool-sql-tabletoclass.html)

Hobbycoder 11. Sep 2018 08:24


Kleines Tool: SQL - TableToClass
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,

ich bin von Natur aus ein fauler Mensch (ob das auf alle Entwickler zutrifft kann und will ich nicht behaupten).
Jedenfalls ging es mir auf den Keks ständig das Klassengerüst für meine Datenbanktabellen zu schreiben. Jedenfalls bei 102 Tabellen + Views schon echt Arbeit.

Weil mir ja nun die DP und deren User wirklich viele gehen (nämlich ihre Zeit, um mir bei meinen Fragen und Problemen zu helfen), will ich mal was zurückgeben, sofern gewünscht.

Nun, dann schreibe ich mir halt ein kleines Tool, dass mir zumindest mal das 'Grobe' abnimmt. Herausgekommen ist ein doch recht nützliches Werkzeug.
Ich bin mir sicher, sowas gibt es schon. Trotzdem habe ich mich nicht auf die Suche gemacht, sondern einfach das ganze nach meinen Bedürfnissen umgesetzt.
Sicherlich arbeitet jeder Entwickler etwas anders, so dass es nicht für alle 'brauchbar' ist.
Wer aber sich schnell aus der Tabelle eines SQL-Servers eine Klasse erstellen will, der kann das nutzen.

Es ist kein Allrounder, sondern wirklich nur ein ganz kleines Tool, was nichts anderes macht, als die Felder aus einer Tabelle lesen, die Datentypen zu assoziieren und das ganze in eine Delphi-Klasse umzusetzen. Nicht mehr und nicht weniger. Zusätzlich erstellt es gleich eine TObjectList und packt auch die SQL-Abfrage gleich mit hinein. Eben so, wie ich es immer mache. So dauert jetzt das Erstellen eine Klassen-Unit zu einer neuen Tabelle statt 5-10 Minuten nur noch 15 Sekunden. Für mich eine echte Erleichterung.

Danach braucht man nur noch alles ein wenig nach seinen Bedürfnissen anpassen, dass zu löschen, was man nun nicht benötigt, und fertig.

Wer will kann sich das ja mal anschauen oder auch gerne nutzen.

Zur Zeit wird MySQL, MSSQL, Interbase/Firebird und ODBC unterstützt. Ich könnte aber noch andere DBMS aufnehmen, wenn der Bedarf besteht. Dann müsste ich es aber erst ein wenig umbauen.

Und wie gesagt, ich bin mir bewusst, dass es solche Tools bestimmt schon gibt. Aber ich wollte weder was kaufen, noch mir irgendwelche Softwarepakete installieren, sondern das einfach mal selbst machen.

Exe-Datei und Schreenshot im Anhang.

Feedback (in freundlicher Form) durchaus erwünscht.

mkinzler 11. Sep 2018 10:01

AW: Kleines Tool: SQL-Table to Class
 
Liste der Anhänge anzeigen (Anzahl: 1)
Du könntest dir auch mal Marshmallow/Sping4D ansehen.

Dort ist auch ein entsprechendes Tool beinhaltet.

Delphi-Quellcode:
unit ORM.Model.Employee.CUSTOMER;

interface

uses
  Spring.Persistence.Mapping.Attributes,
  Spring.Persistence.Core.Graphics;

type
  [Entity]
  [Table('CUSTOMER', '')]
  TCUSTOMER = class
  private
    FCUST_NO: Integer;
    FCUSTOMER: string;
    FCONTACT_FIRST: string;
    FCONTACT_LAST: string;
    FPHONE_NO: string;
    FADDRESS_LINE1: string;
    FADDRESS_LINE2: string;
    FCITY: string;
    FSTATE_PROVINCE: string;
    FCOUNTRY: string;
    FPOSTAL_CODE: string;
    FON_HOLD: string;
  public
    [Column('CUST_NO',[cpRequired,cpPrimaryKey,cpNotNull],10,0)]
    property CUST_NO: Integer read FCUST_NO write FCUST_NO;
    [Column('CUSTOMER',[cpRequired,cpNotNull],25)]
    property CUSTOMER: string read FCUSTOMER write FCUSTOMER;
    [Column('CONTACT_FIRST',[],15)]
    property CONTACT_FIRST: string read FCONTACT_FIRST write FCONTACT_FIRST;
    [Column('CONTACT_LAST',[],20)]
    property CONTACT_LAST: string read FCONTACT_LAST write FCONTACT_LAST;
    [Column('PHONE_NO',[],20)]
    property PHONE_NO: string read FPHONE_NO write FPHONE_NO;
    [Column('ADDRESS_LINE1',[],30)]
    property ADDRESS_LINE1: string read FADDRESS_LINE1 write FADDRESS_LINE1;
    [Column('ADDRESS_LINE2',[],30)]
    property ADDRESS_LINE2: string read FADDRESS_LINE2 write FADDRESS_LINE2;
    [Column('CITY',[],25)]
    property CITY: string read FCITY write FCITY;
    [Column('STATE_PROVINCE',[],15)]
    property STATE_PROVINCE: string read FSTATE_PROVINCE write FSTATE_PROVINCE;
    [Column('COUNTRY',[],15)]
    property COUNTRY: string read FCOUNTRY write FCOUNTRY;
    [Column('POSTAL_CODE',[],12)]
    property POSTAL_CODE: string read FPOSTAL_CODE write FPOSTAL_CODE;
    [Column('ON_HOLD',[],1)]
    property ON_HOLD: string read FON_HOLD write FON_HOLD;
  end;

implementation


end.

Hobbycoder 11. Sep 2018 11:24

AW: Kleines Tool: SQL-Table to Class
 
Mach ich. Danke.

Aber ich schrieb ja
Zitat:

Zitat von Hobbycoder (Beitrag 1412915)
Und wie gesagt, ich bin mir bewusst, dass es solche Tools bestimmt schon gibt. Aber ich wollte weder was kaufen, noch mir irgendwelche Softwarepakete installieren, sondern das einfach mal selbst machen.

Außerdem bin ich gerade dabei mir für beliebige Felder ein IndexOf bzw. SortBy automatisch mit einzubauen, dann spare ich mir noch mehr Auswand.

Hobbycoder 11. Sep 2018 12:42

AW: Kleines Tool: SQL-Table to Class
 
So, für alle, die es interessiert, ich habe noch ein paar kleine Verbesserungen vorgenommen:

- Kleine Fehler beseitigt
- Eigene Connection und eigene Query-Klasse kann angegeben werden (sonst ist es wirklich nur für mich nutzbar)
- Doppelklick auf die Feldliste zum Ändern des DatenTyps
- AutoInc wird erkannt und nicht mehr in den Inserts oder Updates als Feld verwendet
- Eine Sortierung zu jeder Property wird mit angelegt (Kann eingestellt werden)
- Ein IndexOf zu jedem Property wird mit angelegt (kann eingestellt werden)
- Weiterhin kann man für jede Feld dieses einzeln festlegen (Doppelklick auf Feld)

Die neue Version liegt im Anhang des ersten Post.

jobo 11. Sep 2018 21:41

AW: Kleines Tool: SQL-Table to Class
 
Hab's mal probiert. Ich kann leider nur mysql auswählen.
Sowas hab ich dann mal aus einer (alten) xampp Installation gestartet, bekomme aber kein Connect.
Es passiert nichts. Der Verbindungsdialog (Connection Manager) bleibt stehen.
Phpmyadmin geht dagegen.
Test Parameter:
Port laut xampp
Server localhost
user root
Schema verschiedene laut phpmyadmin probiert.
xampp, mysql sind auch 32bit wie die Anwendung.
Ja und jetzt wo ich nachschaue, mysql ist mariadb 10.1.26

Klick auf Abbrechen in Connection Manager bringt AV, die immer mehr werden.

P.S.: Avast macht ziemlich Wind, aber kennt man ja schon.

Hobbycoder 11. Sep 2018 22:42

AW: Kleines Tool: SQL-Table to Class
 
Hätte das nur auf meiner Entwicklungsmaschine getestet ;-) war vielleicht etwas zu Voreilig.
Und jetzt wo du‘s sagst....ein bisschen Errorhandling im Connection-Manager wär auch nicht schlecht ;-)

Ich werd das morgen mal auf einer Maschine Testen, die Jungfräulich ist..
ich könnte auch mal madExcept aktivieren. Dann kann man mit verpatztem.Errorhandling etwas mehr anfangen ;-)

Danke für die Rückmeldung. Wenn ich‘s dann korrigiert habe, würdest du das nochmal Testen?

jobo 12. Sep 2018 07:46

AW: Kleines Tool: SQL-Table to Class
 
Erfahrungsgemäß sind es ja irgendwelche lokalen Konstanten die woanders nicht passen, feste Verzeichnisse usw.
Ach und was mir einfällt, ich war so frech, das direkt aus dem ZIP zu starten. Und noch schlimmer: altes Windows 7.
Also wer weiß, was fehlt..

DP-Maintenance 12. Sep 2018 13:38

Dieses Thema wurde am "12. Sep 2018, 14:38 Uhr" von "mkinzler" aus dem Forum "Sonstige Werkzeuge" in das Forum "Software-Projekte der Mitglieder" verschoben.

jobo 12. Sep 2018 19:53

AW: Kleines Tool: SQL-Table to Class
 
So jetzt läuft es!
Das ist ja schon recht umfangreich, was Du generierst! Ich hab mal ein Test auf phpmyadmin Schema laufen lassen. Sicher wäre es nun sinnvoll, die generierten Klassen zu testen. Dazu werde ich sobald nicht kommen :)


@Conntection Manager
Ich finde es gewöhnungsbedürftig, dass er nicht zu geht nach Verbindung (falls das so sein soll), sonst geht es nur über X.
Trennen und Verbinden sind nicht richtig gekoppelt. Es geht scheinbar eine Verbindung mit mehreren DB. Fokus und Aktion passen dann nicht mehr.
Default und Default alle habe ich nicht verstanden, Default produziert AV.

Ich hab derzeit keinen Anwendungsfall, aber ich denke, es kann einem viel Arbeit abnehmen.
Frag mich gerade, ob sowas nicht in die IDE gehört. (Oder ist es schon drin, außer auf den billigen Plätzen?)

Hobbycoder 13. Sep 2018 10:31

AW: Kleines Tool: SQL-Table to Class
 
Zitat:

Zitat von jobo (Beitrag 1413063)
So jetzt läuft es!
Das ist ja schon recht umfangreich, was Du generierst! Ich hab mal ein Test auf phpmyadmin Schema laufen lassen.

Wobei ich allerdings nichts am Verbindungsaufbau selbst geändert habe. Ich habe lediglich ein ShowMessage für Verbindungsfehler hinzugefügt.


Zitat:

Zitat von jobo (Beitrag 1413063)
Sicher wäre es nun sinnvoll, die generierten Klassen zu testen. Dazu werde ich sobald nicht kommen :)

Also ich verwende das Tools jetzt für mein aktuelles Projekt (Neuerstellung eines alten D7-Projekts), in dem ich auch viele neue Tabellen anlege oder umbaue. Ich muss sagen, nach dem erstellen der Tabelle, starte ich kurz das Tool, lasse mir die Klasse erstellen, füge das in eine neue Unit ein, und kann sofort mit den Daten aus der DB arbeiten.
Zwar müssen die speziellen Anpassungen an mein Projekt trotzdem noch händisch erfolgen, aber ich merke jetzt schon das ich enorm Zeit einspare.


Zitat:

Zitat von jobo (Beitrag 1413063)
@Conntection Manager
Ich finde es gewöhnungsbedürftig, dass er nicht zu geht nach Verbindung (falls das so sein soll), sonst geht es nur über X.
Trennen und Verbinden sind nicht richtig gekoppelt. Es geht scheinbar eine Verbindung mit mehreren DB. Fokus und Aktion passen dann nicht mehr.
Default und Default alle habe ich nicht verstanden, Default produziert AV.

Den habe ich etwas überarbeitet. (Ich hatte den einfach aus einem anderen Projekt von mir geklaut ;-) ). Nun sollten die Buttons besser gekoppelt sein und nach dem Connect schließt sich der Connectionmanager auch.

Zitat:

Zitat von jobo (Beitrag 1413063)
Ich hab derzeit keinen Anwendungsfall, aber ich denke, es kann einem viel Arbeit abnehmen.
Frag mich gerade, ob sowas nicht in die IDE gehört. (Oder ist es schon drin, außer auf den billigen Plätzen?)

Tja, das hatte ich mir auch schon gedacht. Man könnte sich das unter Tools einfach einbinden. Nach dem Erstellen der Klasse macht mein Tool ja damit nichts mehr.
Um z.B. eine Funktion zu erstellen, die eine bestehende Klasse um weiter DB-Felder zu erweitern, müsste ich die Unit parsen um manuelle Veränderungen nicht zu eliminieren. Das würde mir aber zu aufwendig. Dafür kann man ja mit dem Tool die Tabelle auslesen, und die benötigten Teile händisch per Copy&Paste rüber kopieren.

Was vielleicht noch Sinn machen würde, wäre einen Interface-Teil zu integrieren. Aber dazu müsste ich mich erst mal mit Interfaces befassen, damit ich das machen könnte.

Ansonsten habe ich eine neue Version hochgeladen. Ich habe sie um ein paar nette Features erweitert. Unter Anderem in der Hinsicht, dass das Tool sich jetzt die Einstellungen zu jeder Tabelle einzeln wegschreibt (INI-Datei im gleichen Verzeichnis wie die EXE), und automatisch wieder lädt, sobald diese Tabelle wieder angeklickt wird. Und ein paar andere Kleinigkeiten.

EWeiss 13. Sep 2018 10:39

AW: Kleines Tool: SQL-Table to Class
 
Habe da jetzt nichts sonderliches mit gemacht wie auch bei der Anzeige der Forms?
Da musst du aber noch einiges dran tun ein Invalidate könnte unter umständen wunder wirken.

Frage mich gerade was wollen mir die Checkboxen denn so mitteilen. ;)

gruss

Hobbycoder 13. Sep 2018 12:17

AW: Kleines Tool: SQL-Table to Class
 
Zitat:

Zitat von EWeiss (Beitrag 1413095)
Habe da jetzt nichts sonderliches mit gemacht wie auch bei der Anzeige der Forms?
Da musst du aber noch einiges dran tun ein Invalidate könnte unter umständen wunder wirken.

Frage mich gerade was wollen mir die Checkboxen denn so mitteilen. ;)

gruss

Habe eine neue Version hochgeladen. Da sollte das jetzt nicht mehr so aussehen. Leider konnte ich das auch bei mir nicht nachvollziehen, denn da sieht's immer gut aus.
Kannst ja noch mal schauen.

jobo 13. Sep 2018 13:54

AW: Kleines Tool: SQL-Table to Class
 
Zitat:

Zitat von Hobbycoder (Beitrag 1413094)
Zitat:

Zitat von jobo (Beitrag 1413063)
So jetzt läuft es!
Das ist ja schon recht umfangreich, was Du generierst! Ich hab mal ein Test auf phpmyadmin Schema laufen lassen.

Wobei ich allerdings nichts am Verbindungsaufbau selbst geändert habe. Ich habe lediglich ein ShowMessage für Verbindungsfehler hinzugefügt.
...

Die Verbindungsprobleme konnte ich dank der Fehlermeldung dann lösen, root ist halt was anderes als root@localhost in mysql.

Was eine Integration bzw. iterativen Einsatz angeht, würde eine Source Versionierung mit Div Funktion ja schon viel weiter helfen oder? Also gar keine Änderung am Tool selbst.
Das Tool spuckt neu, geänderte (fehlende) Attribute bzw. zugehörigen Code aus und man übernimmt, was man braucht. Bei starker Nachberarbeitung jenseits des DB Modells ist das aber vielleicht auch grenzwertig.
Ggf. kann man das auch noch etwas abfedern, wenn man mit Include arbeitet, also include, das mitgeneriert wird (auf Wunsch).
Dann hat man am ehesten einen statischen/generierten Teil und dahinter, dazwischen noch eigenen Kram.

Hobbycoder 13. Sep 2018 14:19

AW: Kleines Tool: SQL-Table to Class
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich denke soweit ist das aber schon ganz gut.

Und weil's doch noch netter aussieht, habe ich es noch ein bisschen angehübscht.

Wie gesagt, wenn das Interesse besteht, auch andere Datenbanken aufzunehmen, müsst ihr mir das sagen.

EWeiss 13. Sep 2018 14:23

AW: Kleines Tool: SQL-Table to Class
 
Zitat:

Zitat von Hobbycoder (Beitrag 1413107)
Zitat:

Zitat von EWeiss (Beitrag 1413095)
Habe da jetzt nichts sonderliches mit gemacht wie auch bei der Anzeige der Forms?
Da musst du aber noch einiges dran tun ein Invalidate könnte unter umständen wunder wirken.

Frage mich gerade was wollen mir die Checkboxen denn so mitteilen. ;)

gruss

Habe eine neue Version hochgeladen. Da sollte das jetzt nicht mehr so aussehen. Leider konnte ich das auch bei mir nicht nachvollziehen, denn da sieht's immer gut aus.
Kannst ja noch mal schauen.

Invalidate scheint wohl gewirkt zu haben ;)

gruss

API 13. Sep 2018 14:29

AW: Kleines Tool: SQL-Table to Class
 
Zitat:

Zitat von Hobbycoder (Beitrag 1413119)
Wie gesagt, wenn das Interesse besteht, auch andere Datenbanken aufzunehmen, müsst ihr mir das sagen.

Wäre nett für MS SQL Server.

Delphi.Narium 13. Sep 2018 14:34

AW: Kleines Tool: SQL-Table to Class
 
Welche Datenbankkomponenten nutzt Du?

Können die auch mit ADO umgehen, dann könnte man nach 'nem Connctionstring fragen und damit funktionieren dann alle Datenbanken, auf die man über ADO zugreifen kann. Um die Einrichtung der passenden Verbindung, Treiber ... muss sich der Nutzer dann halt selbst kümmern.

Ansonsten wäre eine Unterstützung von FireBird nett :-)

Hobbycoder 13. Sep 2018 15:17

AW: Kleines Tool: SQL-Table to Class
 
Ich habe jetzt mal den MSSQL, ODBC und Firebird mit reingenommen. Ist aber ungetestet. MSSQL bzw. ODBC kann ich selbst auch testen. Aber Firebird habe ich nicht im Einsatz.
@Delphi.Narium: wär nett, wenn du das mal machen könntest.

EDIT: Hab's noch mal neu hochgeladen. Es fehlte noch ein paar Units in den USES

Hobbycoder 13. Sep 2018 15:30

AW: Kleines Tool: SQL-Table to Class
 
Grad mal ein bisschen mit MSSQL rumprobiert. Connecten geht...aber das abrufen von Tabelleninformation noch nicht. Da muss ich ein bisschen was anpassen. Aber das sollte mit mäßigem Aufwand machbar sein.
Wie's bei ODBC oder gar Firebird aussieht kann ich noch nicht sagen.

EWeiss 13. Sep 2018 15:32

AW: Kleines Tool: SQL-Table to Class
 
Links hast du schön mit Align gearbeitet warum rechts nicht auch?
Man sieht ja die hälfte der Controls nicht mehr wenn das Fenster in der größe verändert wird.

gruss

Hobbycoder 13. Sep 2018 16:09

AW: Kleines Tool: SQL-Table to Class
 
Ich hatte das Control getauscht und dann vergessen die Aligns zu setzen. Sollte jetzt gehen.

Und ich habe ein paar Anpassungen für MSSQL-Server vorgenommen. Ich hoffe, dass er jetzt alle Feldtypen richtig erkennt.

Delphi.Narium 13. Sep 2018 16:12

AW: Kleines Tool: SQL-Table to Class
 
Zitat:

Zitat von Hobbycoder (Beitrag 1413135)
Ich habe jetzt mal den MSSQL, ODBC und Firebird mit reingenommen. Ist aber ungetestet. MSSQL bzw. ODBC kann ich selbst auch testen. Aber Firebird habe ich nicht im Einsatz.
@Delphi.Narium: wär nett, wenn du das mal machen könntest.

EDIT: Hab's noch mal neu hochgeladen. Es fehlte noch ein paar Units in den USES

Bei FireBird werden die Tabelle angezeigt, aber keine Felder.

Wenn man 'nen Doppelclick auf 'nen Tabellenamen macht, gibt's 'ne Fehlermeldung:
Code:
Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 1
Show.
FireBird kennt den Befehl Show nicht. Wenn Du die Infos mit Show ausliest, schmeiß FireBird einfach wieder raus, dann geht das (erstmal) nicht.

ODBC:

Was für eine Eingabe wird bei "Datenbank/Schema" erwartet?

Weder ein Datenquellenname aus der ODBC-Verwaltung noch ein Connectionstring aus 'ner anderen Anwendung funktionieren.

Fehlermeldung in beiden Fällen:
Code:
Es ist ein Fehler beim Verbindungsaufbau aufgetreten

Errorcode: -1

ErrorMessage: -1: [Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben

mkinzler 13. Sep 2018 16:23

AW: Kleines Tool: SQL-Table to Class
 
Welche Zugriffskomponenten? Möglicherweise bieten diese ja eine Abstraktion für die Ermittlung der Metadaten an.

EWeiss 13. Sep 2018 16:25

AW: Kleines Tool: SQL-Table to Class
 
Zitat:

Ich hatte das Control getauscht und dann vergessen die Aligns zu setzen. Sollte jetzt gehen.
Na ja nicht wirklich.. aber gut war mein letzter Test.
Viele spass noch damit.

gruss

Hobbycoder 13. Sep 2018 16:49

AW: Kleines Tool: SQL-Table to Class
 
Zitat:

Zitat von mkinzler (Beitrag 1413146)
Welche Zugriffskomponenten? Möglicherweise bieten diese ja eine Abstraktion für die Ermittlung der Metadaten an.

UniDAC
Das hatte ich auch erst im Sinn. Entstanden ist das eigentlich aus einer ganz anderen Problematik, wo es mir darum ging die Defaultwerte von Feldern auszulesen. Evtl. macht es sinn, das noch mal aufzugreifen ;-)

Zitat:

Zitat von EWeiss (Beitrag 1413147)
Na ja nicht wirklich.. aber gut war mein letzter Test.
Viele spass noch damit.

Is okay....den werd ich haben.8-)

mkinzler 13. Sep 2018 16:55

AW: Kleines Tool: SQL-Table to Class
 
Liste der Anhänge anzeigen (Anzahl: 1)
TUniMetaData

Hobbycoder 13. Sep 2018 17:21

AW: Kleines Tool: SQL-Table to Class
 
Danke für den Hinweis. Das schaue ich mir mal an.

Hobbycoder 14. Sep 2018 13:46

AW: Kleines Tool: SQL-Table to Class
 
So, ich habe jetzt ein bisschen weiter daran gearbeitet.
Danke an mkinzler für den Tipp. Ich habe jetzt das ganze daraufhin umgestellt.

Jetzt können ausgelesen werden: MySQL, MSSQL, Interbase/Firebird, ODBC.

Bei MSSQL versuche ich die im Netzwerk verfügbaren SQL-Server zu finden, diese werden dann in der Combobox Server hinterlegt.

Gleiches gilt für ODBC-DSN, sowohl Benutzer-DSN als auch System-DSN. Diese werden aus der Registry gelesen. Ich hoffe mit dem Zugriff auf HKLM (ReadOnly) gibt es keine Probleme.

Wer mag kann das ja mal austesten.

Auch bei der Zuordnung der Datentype, war und ist das nicht so einfach. Während MySQL da sehr kommunikativ ist, bekomme ich von MSSQL und Firebird nur einen Integerwert, der den verwendeten Datentyp repräsentiert. Diesen muss ich umschlüsseln, um so auf den richtigen Datentyp zu kommen. Auch hier können noch Fehler drin sein.

Ich werde weiter an dem Tool arbeiten. Wenn noch andere Wünsche existieren, immer raus damit.

API 14. Sep 2018 14:30

AW: Kleines Tool: SQL-Table to Class
 
Es möchte Changelog.pas auf dem C:\ Rootfolder erstellen?

---------------------------
Table To Class - Test - 0.0.0.0
---------------------------
Datei "C:\Changelog.pas" kann nicht erstellt werden. Access is denied.
---------------------------
OK
---------------------------

Klaus01 14. Sep 2018 14:35

AW: Kleines Tool: SQL-Table to Class
 
Zitat:

Zitat von API (Beitrag 1413192)
Es möchte Changelog.pas auf dem C:\ Rootfolder erstellen?

---------------------------
Table To Class - Test - 0.0.0.0
---------------------------
Datei "C:\Changelog.pas" kann nicht erstellt werden. Access is denied.
---------------------------
OK
---------------------------

..mal versucht manuell eine Datei in C:\ anzulegen?

Grüße
Klaus

Hobbycoder 14. Sep 2018 14:42

AW: Kleines Tool: SQL-Table to Class
 
Zitat:

Zitat von API (Beitrag 1413192)
Es möchte Changelog.pas auf dem C:\ Rootfolder erstellen?

---------------------------
Table To Class - Test - 0.0.0.0
---------------------------
Datei "C:\Changelog.pas" kann nicht erstellt werden. Access is denied.
---------------------------
OK
---------------------------

Bei was passiert das? Ich wüsste nicht, dass ich irgendwo eine solche Datei erstellen würde. Jedenfalls nicht bewusst. Könnte höchstens sein, dass eine von den UniDAC-Kompoenten das möchte. Gleich mal schauen.

API 14. Sep 2018 14:42

AW: Kleines Tool: SQL-Table to Class
 
Zitat:

Zitat von Klaus01 (Beitrag 1413193)
..mal versucht manuell eine Datei in C:\ anzulegen?

Das geht natürlich (bei mir auch) nicht.

Eigentlich wollte ich damit sagen, dass C:\ nicht der optimale Ort ist, um Logdateien zu erstellen.7

Hobbycoder 14. Sep 2018 14:45

AW: Kleines Tool: SQL-Table to Class
 
Bei mir macht er das nicht. Woher stammt die Ausgabe, die du zitiert hast?

API 14. Sep 2018 14:51

AW: Kleines Tool: SQL-Table to Class
 
Zitat:

Zitat von Hobbycoder (Beitrag 1413199)
Bei mir macht er das nicht. Woher stammt die Ausgabe, die du zitiert hast?


Die Meldung erscheint, wenn ich auf [Klassen für alle Tabellen erzeugen] klicke.

Hobbycoder 14. Sep 2018 14:52

AW: Kleines Tool: SQL-Table to Class
 
Okay.
Dann hast du in den "weiteren Einstellungen" keine Ausgabepfad hinterlegt. Mach da mal einen rein, dann sollte das wohl passen.
Der, der in der Hauptansicht unten steht, gilt nur wenn man nur die eine Tabelle speichern möchte. Wenn man "Klasse für alle Tabellen erzeugen" anklickt nimmt er immer den Pfad aus den Voreinstellungen.

Das ist so, weil ich das irgendwann mal so geändert habe, dass er sich die Einstellungen für jede Tabelle einzeln merken können soll.
Damit bin ich auch noch nicht glücklich. Vielleicht sollte ich dort eine Pfadauswahl einblenden, oder drauf hinweisen, dass noch kein Pfad eingestellt ist.

API 14. Sep 2018 14:58

AW: Kleines Tool: SQL-Table to Class
 
Noch etwas:

Wenn ich im "Connection-Manager", im Dialog "Verbindung bearbeiten" als DB-System "MS SQL-Server" auswähle, reagiert die Anwendung einige Sekunden nicht mehr. Es werden bei mir auch keine Server gefunden.
Die Suche nach Servern sollte erst dann ausgeführt werden, wenn auf den "Pfeil-nach-Unten" im Server/IP_Adresse Dropdown geklickt wird. Somit kann man eine IP Adresse manuell eingeben, ohne dass jedesmal dieser Suchvorgang gestartet wird (so funktioniert es zumindest auch im Excel Data Connection Wizard)

Hobbycoder 14. Sep 2018 15:03

AW: Kleines Tool: SQL-Table to Class
 
Danke. Werd ich so machen.

Hobbycoder 14. Sep 2018 18:48

AW: Kleines Tool: SQL-Table to Class
 
Hab noch mal eine neue Version hochgeladen.

War noch ein kleiner Fehler in der INI-Datei. Ich habe noch alle o.g. Fehler/Verbesserungen umgesetzt, und ein paar Kleinigkeiten gemacht.

jobo 15. Sep 2018 08:55

AW: Kleines Tool: SQL-Table to Class
 
Firbird types von alterton.info
Code:
 SELECT r.rdb$field_name           AS field_name,
       r.rdb$description          AS field_description,
       r.rdb$default_value        AS field_default_value,
       r.rdb$null_flag            AS field_not_null_constraint,
       f.rdb$field_length         AS field_length,
       f.rdb$field_precision      AS field_precision,
       f.rdb$field_scale          AS field_scale,
       CASE f.rdb$field_type
         WHEN 261 THEN 'BLOB'
         WHEN 14 THEN 'CHAR'
         WHEN 40 THEN 'CSTRING'
         WHEN 11 THEN 'D_FLOAT'
         WHEN 27 THEN 'DOUBLE'
         WHEN 10 THEN 'FLOAT'
         WHEN 16 THEN 'INT64'
         WHEN 8 THEN 'INTEGER'
         WHEN 9 THEN 'QUAD'
         WHEN 7 THEN 'SMALLINT'
         WHEN 12 THEN 'DATE'
         WHEN 13 THEN 'TIME'
         WHEN 35 THEN 'TIMESTAMP'
         WHEN 37 THEN 'VARCHAR'
         ELSE 'UNKNOWN'
       END                        AS field_type,
       f.rdb$field_sub_type       AS field_subtype,
       coll.rdb$collation_name    AS field_collation,
       cset.rdb$character_set_name AS field_charset
FROM  rdb$relation_fields r
       LEFT JOIN rdb$fields f
              ON r.rdb$field_source = f.rdb$field_name
       LEFT JOIN rdb$collations coll
              ON f.rdb$collation_id = coll.rdb$collation_id
       LEFT JOIN rdb$character_sets cset
              ON f.rdb$character_set_id = cset.rdb$character_set_id
WHERE r.rdb$relation_name = 'TEST2' -- table name
ORDER BY r.rdb$field_position;

jobo 15. Sep 2018 11:36

AW: Kleines Tool: SQL-Table to Class
 
Ich würde noch Postgresql gut finden, auch wenn ich das Tool absehbar nicht brauche.

@sql field types: Wieso nutzt Du die Metainfo Funktion nicht, auf die mkinzler hingewiesen hat?
Außerdem müsste doch ein simples "select * from <quelle> where 1=0" reichen, damit Delphi selbst die Feldtypen an die Felder bindet? Dort wären sie dann abgreifbar.
Wahrscheinlich gibt es nur bei Float Typen aus der DB Interpretationsspielraum bzw. müsste der Anwender entscheiden können, was was werden soll, money, double, bcd, ..


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz