| |
|
|
- Seite 1 - |
|
Dietmar Horn | Hallo zusammen,
heute wende ich mich mal mit einem SQL-Problem zwecks Bitte um Hilfestellung an die SQL-Experten unter euch.
Ich arbeite z.Z. mit XProfan 11 an einem komplexeren Projekt. Es ist schon recht weit gediehen. Der bisher einzigste, aber entscheidende Problempunkt ist für mich die An- bzw. Einbindung des RDBS Firebird (Freeware bzw. Open-Source) bzw. Interbase (das kostenpflichtige Gegenstück von Borland zu Firebird - ähnlich wie das Verhältnis zwischen MS Office und Open-Office).
Bisher mußte ich mich noch nie groß mit SQL beschäftigen, außer daß ich mir immer mal die XProfan-Hilfe zum SQL-Thema reingezogen und das alles als recht logisch empfunden hatte. Doch wie des öfteren, liegt der Hund bestimmt nur in einem winzigen Detail begraben, was ich nicht kenne, oder in einem Fehler, den ich gemacht oder übersehen habe.
Firebird und Interbase kannte ich bis vor 4 Wochen noch nicht mal vom Namen her, weil ich sowas noch nie benötigt hatte - aber nun ist es soweit.
ODBC-Treiber und Firebird sind installiert.
Zunächst geht es darum, eine Verbindung herzustellen. Unter Windows 2000 (in unserem Vereins-Kabinett) klappt die Initialisierung mit SQLInit inzwischen.
Die Initialisierung liefert unter W 2000 wie gewünscht das Handle zurück:
Unter Windows XP ergibt das jedoch bis jetzt immer 0 (also gescheitert), und im Gegensatz zu W 2000 erscheint da vorher noch nicht mal der Dialog zum Eingeben von Username, PWD, usw.
Bevor dieses Problem mit dem Herstellen der Verbindung nicht gelöst ist, brauche ich gar nicht groß weitermachen.
Literatur über Firebird habe ich inzwischen tonnenweise, doch bevor ich es nicht schaffe, auf allen Windows-Systemen ab 2000 aufwärts eine zuverlässige Verbindung herzustellen, nützt mir das alles leider nicht allzu viel.
Kann mir vielleicht jemand weiterhelfen, der sich schon mal etwas näher damit beschäftigt hat?
Die nächsten Schritte, also das Neuanlegen einer Datenbank, oder das Bearbeiten / Auslesen einer vorhandenen DB und das Weiterverarbeiten der Daten im eigentlichen Programm dürfte dann lediglich noch einer reine Fleiß- und Logik-Arbeit sein.
Das Ausweichen z.B. auf dBase ist nicht möglich, weil dBase dbzgl. nicht über die für dieses Projekt erforderlichen Feautures verfügt.
Wer kann evtl. weiterhelfen?
Ich vermute mal, wenn das Programm irgendwann mit Firebird läuft, dann müßte das Programm auch mit Interbase funktionieren - oder?
Gruß und Danke im voraus Dietmar |
|
|
| Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 11.01.2009 ▲ |
|
|
|
| |
|
- Seite 2 - |
|
|
RGH | Ach ja:
Natürlich kann man auch den SQL-Kurs aus der XProfan-Hilfe mit FireBird absolvieren.
Dazu habe ich mit dem SEHR empfehlenswerten (und kostenlosen) SQL Manager 2008 Lite for InterBase and Firebird (den gibt es hier: [...] ) die Datenbank KURSDB.GDB erstellt und im ODBC-Manager eingebunden.
Die Erstellung der Tabelle variiert etwas, da InterBase keinen Datentyp NUMBER kennt, sondern stattdessen den Typ NUMERIC. So kann die Tabelle Bücher nun erstellt werden: KompilierenMarkierenSeparieren Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 13.01.2009 ▲ |
|
|
|
|
Dietmar Horn | Danke, Roland!
Bis hierhin klappt es nun auch bei mir. Auf die Geschichte mit dem Treiber wäre ich selber vermutlich nie gekommen.
Mit meinen weiteren Fragen melde ich mich dann später wieder. Bis dahin muß ich erst selber noch etwas experimentieren.
Gruß Dietmar |
|
|
| Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 13.01.2009 ▲ |
|
|
|
|
Dietmar Horn | Hallo Roland,
könntest Du mal bitte die leere KURSDB.FDB hier anhängen. Die knapp 30 MB für den SQL-Manager sind meinem Modem zu Hause zu fett. Ich kann mir das Programm erst am Freitag per DSL holen.
Weißt Du, ob die Dateiformate *.GDB (Interbase) und *.FDB (Firebird) hundertprozentig identisch sind?
Gruß Dietmar |
|
|
| Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 13.01.2009 ▲ |
|
|
|
|
RGH | Hallo Dietmar,
ich vermute mal, dass die beiden Formate identisch sind. Der SQL-Manager kommt mit beiden klar. Ich hänge hier mal meine KURSDB.GDB (gezipt) an. Die zwei datensätze aus dem 2. Kursteil sind auch schon drin.
Gruß Roland |
| 39 kB | | Kurzbeschreibung: | KURSDB.GDB (mit 2 Datensätzen aus dem 2. Kursteil) | | Hochgeladen: | 13.01.2009 | | Ladeanzahl: | | | | Herunterladen |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 13.01.2009 ▲ |
|
|
|
|
Dietmar Horn | Hallo Roland,
bis jetzt klappt das alles wunderbar. Der Rest dürfte nun stupide Fleißarbeit und das Herumschlagen mit der korrekten Syntax werden.
Eine grundsätzliche Frage habe ich noch:
Eine Datenbank besteht aus Tabellen, und in jeder Tabelle befinden sich die Datensätze. Bei dBase besteht die Datenbank aus einer oder mehreren DBF-Dateien, und jede DBF-Datei ist eine Tabelle, in der die entsprechenden Datensätze enthalten sind. Bei Firebird / Interbase dagegen befindet sich sämtliche Tabellen in einer Datei. Ich hoffe, ich habe das so richtig verstanden.
Ist es nun auch irgendwie möglich, in Tabellen wiederum Untertabellen anzulegen?
Einfaches Beispiel:
Datenbank: Adressen (1. Variante) Tabellen: Hoyerswerda, Berlin Tabelle Hoyerswerda: Untertabelle Männlich, Untertabelle Weiblich Tabelle Berlin: Untertabelle Männlich, Untertabelle Weiblich In jeder Untertabelle stehen dann natürlich die Datensätze mit Name, Vorname, usw.
oder kann ich das nur so aufbauen:
Datenbank: Adressen (2. Variante) Tabellen: Hoyerswerda_Männlich, Hoyerswerda_Weiblich, Berlin_Männlich, Berlin_Weiblich In jeder Tabelle dann natürlich die Datensätze mit Name, Vorname, usw.
Gruß Dietmar |
|
|
| Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 13.01.2009 ▲ |
|
|
|
|
| Dietmar Horn
Ist es nun auch irgendwie möglich, in Tabellen wiederum Untertabellen anzulegen?
Nicht wirklich und auch nicht wirklich nötig oder hilfreich.
NeTabelle:UID;Name;Vorname;Adresse;Geschlecht;HYFlag,DabeiSeid...
Wenn Du nur alle HYer filtern möchtest, dann doch einfach über die Anfragen an die jeweilige DB - z.B. select uid from NeTabelle where HYFlag = 1 order by DabeiSeid desc.
Du kannst aber (natürlich) viele Tabellen nebenher in der DB haben, Community z.B. hat eine Tabelle für User, für Threads, für Postings, für Smilies... |
|
|
| |
|
|
|
Thomas Freier |
Nicht wirklich und auch nicht wirklich nötig oder hilfreich
RICHTIG! Denn Dietmar, die Felder brauchst du auch in deiner Hauptdatei, in denen dann der entsprechende key-schlüssel sein muß, um in der anderen Datei die Daten zu finden. In solchen Fällen eine Abfrage-Query zu schreiben ist verdammt mühsahm. Ausgelagert sein könnten Vorwahlen, PLZ, BLZ, usw. . Also Daten, auf die mehrere Datensätze zurück greifen. |
|
|
| |
|
|
|
Dietmar Horn | Ja das ist mir schon klar, daß man das auch mit solchen Filtern lösen kann. Notfalls werde ich das auch in etwa so machen müssen.
Die Datenbank meines Projektes ist wesentlich komplexer aufgebaut - das mit den Adressen HY / Berlin sollte nur als Minibeispiel zur Veranschaulichung dienen, was ich genau meine.
Das Organigramm (bzw. die Struktur) besteht aus 4 Tabellen, mit je 2 Untertabellen und diese wiederum mit je 4 Unter-Untertabellen. Insgesamt also mindestens 32 Tabellen, plus evtl. noch ein bißchen was an Reserven für Nebensächlichkeiten und für spätere Erweiterungen. Es wäre nicht schlecht, wenn das mit den Untertabellen so ginge, wie ich mir das vorstellte - das würde eine Menge Logik-um-die-Ecke-Denkerei sparen ...
Das Ganze soll keine Mini-Adressenverwaltung o.ä. werden, sondern ein kommerzielles Programm (was es in dieser Form noch nicht gibt) für eine spezielle Gruppe von Arztpraxen, von denen es bundesweit 20000 potentielle Kunden gibt. Wegen der Schnittstelle(n) zu anderen Branchen-Programmen bin ich da zwingend auf Interbase / Firebird angewiesen.
Gruß Dietmar |
|
|
| Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 13.01.2009 ▲ |
|
|
|
|
Michael Wodrich | Statt Untertabellen nutzt man Relationen. Redundanzen sollten möglichst vermieden werden, aber: Je weniger Redundanzen, desto komplizierter.
Tutorial [...] Datenbank-Designer [...]
Planen und Erstellen einer Datenbank (ist zwar eine andere Datenbank-Engine, aber man kann etwas zu den Relationen daraus lernen: einfach mal durchklicken und lesen) [...]
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 13.01.2009 ▲ |
|
|
|
|
Dietmar Horn | Danke, Mischa!
Am Freitag werde ich mir das alles natürlich per DSL-Zugang in meine grauen Zellen reinsaugen und abspeichern, usw. Redundanzen, Relationen usw. sind mir schon seit meinem Ma-/Ph-Studium vor -zig Jahren keine Fremdwörter.
Morgen (Mittwoch) werde ich erst mal in Berlin unterwegs sein, um mit den Projekt-Mitstreitern an unserem Firebird-Projekt weitere Einzelheiten konkreter abzustimmen. Von Medizin, Arztpraxen, usw. habe ich bis jetzt natürlich exakt soviel Ahnung, wie z.B. eine Kuh vom Stabhochsprung.
Inzwischen habe ich als XProfan-Programmierer endgültig (eigentlich schon seit Mitte Dezember 2008) den Zuschlag für dieses Projekt bekommen.
Hoch lebe XProfan!
Gruß Dietmar |
|
|
| Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 13.01.2009 ▲ |
|
|
|
|
Dietmar Horn | ... und ich ab ca. 16.00 Uhr bis ca. 23.00 Uhr (open end) in Adlershof / Adlergestell ... |
|
|
| Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 14.01.2009 ▲ |
|
|
|
|
Dietmar Horn | Hallo,
das Speichern, Verändern und Löschen von Datensätzen klappt nun.
Jetzt habe ich noch eine weiteres Problem, welches ich für mein Projekt unbedingt lösen muß:
Wie kann man eine beliebige Datei (z.B. Test.rtf) in einer Tabelle speichern, ersetzen, löschen und wieder auslesen. Ich vermute mal, das Auslesen erfolgt über das Extrahieren der gespeicherten Datei in ein temporäres Verzeichnis, von dem aus man die Datei dann mittels ShellExec, WinExec, etc. aufruft.
Doch wie kriege ich per SQL die Datei in die Tabelle rein und auch wieder raus?
Könnte mir da vielleicht mal ein SQL-Profi ein Demo mit der obigen KUESDB.GDB schreiben, in der eine beliebige Datei gespeichert und auch wieder ausgelesen wird? Ob KURSDB.GDB oder KURSDB.FDB ist egal, denn nach meinen bisherigen Tests sind die Dateiformate von Interbase (*.GDB) und Firebird (*.FDB) scheinbar identisch.
Danke und Gruß Dietmar |
|
|
| Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 09.02.2009 ▲ |
|
|
|