AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Kleines Tool: SQL - TableToClass

Kleines Tool: SQL - TableToClass

Ein Thema von Hobbycoder · begonnen am 11. Sep 2018 · letzter Beitrag vom 1. Jan 2024
Antwort Antwort
Seite 2 von 5     12 34     Letzte » 
Hobbycoder
Registriert seit: 22. Feb 2017
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.
Miniaturansicht angehängter Grafiken
tabletoclass2.jpg  
Angehängte Dateien
Dateityp: zip TableToClass.zip (3,29 MB, 117x aufgerufen)
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.

Geändert von Hobbycoder (24. Sep 2018 um 10:28 Uhr)
 
EWeiss
 
#11
  Alt 13. Sep 2018, 11:39
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

Geändert von EWeiss (11. Jul 2019 um 16:53 Uhr)
  Mit Zitat antworten Zitat
Hobbycoder
 
#12
  Alt 13. Sep 2018, 13:17
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.
  Mit Zitat antworten Zitat
jobo

 
Delphi 2010 Enterprise
 
#13
  Alt 13. Sep 2018, 14:54
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.
  Mit Zitat antworten Zitat
Hobbycoder
 
#14
  Alt 13. Sep 2018, 15:19
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.
Miniaturansicht angehängter Grafiken
tabletoclass2.jpg  

Geändert von Hobbycoder (13. Sep 2018 um 15:25 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#15
  Alt 13. Sep 2018, 15:23
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
  Mit Zitat antworten Zitat
API
 
#16
  Alt 13. Sep 2018, 15:29
Wie gesagt, wenn das Interesse besteht, auch andere Datenbanken aufzunehmen, müsst ihr mir das sagen.
Wäre nett für MS SQL Server.
  Mit Zitat antworten Zitat
Delphi.Narium

 
Delphi 7 Professional
 
#17
  Alt 13. Sep 2018, 15:34
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
  Mit Zitat antworten Zitat
Hobbycoder
 
#18
  Alt 13. Sep 2018, 16:17
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

Geändert von Hobbycoder (13. Sep 2018 um 16:23 Uhr)
  Mit Zitat antworten Zitat
Hobbycoder
 
#19
  Alt 13. Sep 2018, 16:30
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.
  Mit Zitat antworten Zitat
EWeiss
 
#20
  Alt 13. Sep 2018, 16:32
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

Geändert von EWeiss (11. Jul 2019 um 16:53 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:06 Uhr.
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