Autor |
Beitrag |
madmat
      
Beiträge: 28
|
Verfasst: Di 23.07.02 21:19
Hallo,
ich hab mich zwar durch viele Postings gewühlt, aber noch keine DB Grundlagen gefunden.
Wie sind denn die ersten Ansätze in Delphi, wenn ich z.B. eine Access DB mit 3 Tabellen habe und mit einem Programm die Datensätze auslesen (zum weiterrechenen) und wieder in die DB schreiben will ?
Wo finde ich da so eine Art Einsteiger Tutorial ?
Danke für jede Hilfe......
_________________ mfg
madmat
Life is what happens while you ´re making other plans
|
|
Steffer
      
Beiträge: 299
|
Verfasst: Mi 24.07.02 10:52
Hier hast du mal eine kleine Sammlung von Tutorials:
www.faqsen.de/find.j...554850494852575153;2
_________________ Keine Signatur ...
|
|
madmat 
      
Beiträge: 28
|
Verfasst: Mi 24.07.02 11:34
Danke, werde mein Glück gleich mal probieren.
Mein Chef hat übrigens Delphi 6 Professional vorgeschlagen und gekauft, ist das ausreichend bemessen ?
_________________ mfg
madmat
Life is what happens while you ´re making other plans
|
|
Steffer
      
Beiträge: 299
|
Verfasst: Mi 24.07.02 12:12
>Mein Chef hat übrigens Delphi 6 Professional vorgeschlagen und
>gekauft, ist das ausreichend bemessen ?
Ja, absolut
_________________ Keine Signatur ...
|
|
madmat 
      
Beiträge: 28
|
Verfasst: Mi 24.07.02 12:52
Hmm, jetzt hab ich die grundlegenden Tutorials durch, also Tabellen per Table Komponente (die in Delphi 6 im Reiter BDE steckt) und Datasource an ein Delphiprojekt angebunden und in DBedit Felder ausgegeben.
Schön....
Aber wie kann ich jetzt die verschiedenen Tabellen einer Access DB ansprechen ? Oder muss ich die alle einzeln exportieren ?
Das wäre doch wider dem Sinn einer Datenbank, oder ?
_________________ mfg
madmat
Life is what happens while you ´re making other plans
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Mi 24.07.02 14:51
Hallo,
es gibt verscheidene arten wie du auf die Access Datenbank zugreifen kannst. Wenn du bei der BDE bleiben willst kannst du über den entsprechenden ODBC Treiber drauf zugreifen. Das würde ich nicht empfehlen. Weiter möglichkeiten währen DAO oder ADO.
Verwendet habe ich bisher nur die letzte welche auch die aktuellste darstellt. Hierzu benötigst due ADO Komponenten und einen Connection Sting mit dem du dich verbindest. Eine Diskussion zu letzteren findest du hier. Ich kenne den lieferumfang von D6Pro nicht. Sollten dort keine ADO Komponenten enthalten sein findest du auch kosstenlose bei den üblichen verdächtigen.
Desweiteren kannst du sicherlich einiges zum Thema DELPHI und Access hier in der Datenbanksparte finden und dir hier anregungen holen ob Access wirklich die beste Wahl für dein Problem ist.
Gruß
Klabautermann
|
|
madmat 
      
Beiträge: 28
|
Verfasst: Mi 24.07.02 19:35
Cool, danke.
Nächstes Problem weiter unten  ...
Ich habs jetzt erstmal über ODBC geschafft, da´s das erste war das funktionierte.
Warum rätst Du davon ab ?
Muss der Anwender irgendwas Spezielles installieren damits bei ihm funzt ?
Ist Access zu langsam/gross/kompliziert ?
Unsere Kunden liefern nur im Access Format, daher fiel die Wahl erstmal leicht.
Angenommen ich bleibe bei jetziger Lösung, wie kann ich über Delphi eine leere DB erzeugen ?
Eine Routine soll abprüfen ob eine DB vorhanden ist, wenn nicht eine leere anlegen.
Mir fehlt "nur" die Syntax des Anlegens, der Rest ist klar.
Vielen Dank im Vorraus
_________________ mfg
madmat
Life is what happens while you ´re making other plans
|
|
Alfons-G
      
Beiträge: 307
Win XP Prof, Linux, Win 7
D5 Prof, D7 Architect, D2005 Architect, D2007 Architect
|
Verfasst: Mi 24.07.02 20:01
ODBC ist leider ziemlich langsam
Eine Datenbank anlegen ist über ODBC nicht möglich, da der Anwender eine ODBC-Verknüpfung mit einer bestehenden DB benötigt, damit das Programm darauf zugreifen kann.
Du müsstest also eine leere Access-DB mitliefern (die kann ganz leer sein), und diese, wenn der Anwender noch keine hat, ins passende Verzeichnis kopieren. Dein Setup muss sich dann auch um die ODBC-Verküpfung kümmern. Zu diesem Thema gibt's was in der Tipps-Rubrik bei Swiss Delphi-Center.
Bessere Performance erreichst Du mit speziellen Access-Zugriffskomponenten. Diese machen auch die BDE überflüssig. Bei Torry & Co findest Du z.B. KaDAO.
Ansonsten bleibt der Zugriff über ADO, wie von Klabautermann vorgeschlagen.

_________________ Alfons Grünewald
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Do 25.07.02 10:29
Hallo,
madmat hat folgendes geschrieben: | Muss der Anwender irgendwas Spezielles installieren damits bei ihm funzt ? |
Das ist bei jeder Lösung der Fall. Bei der ODBC-Variante musst du neben den ODBC-Access Treiber auch noch die BDE (über 6 MB) mit ausliefern. Diese darf (wenn ich richtig informiert bin) sogar nur mit von Borland lizensierten Installprogrammen ausgeliefert werden, es ist dir also nicht mehr freigestellt welchen Installer du verwendest.
madmat hat folgendes geschrieben: | Ist Access zu langsam/gross/kompliziert ? |
Meines wissens frakmentieren Access DBs recht leicht und werden sehr schnell sehr groß. Allerdings weiß ich dies nur vom Hörensagen, da ich Access nur auf Pocket-PCs einsetze und die dortige variante ohnehin nicht mit der Desktop Lösung verglichen werden kann  .
Wenn du allerdings mit sehr vielen Datensätzen arbeiten willst, solltest du auf eine Client/Server Datenbank umsteigen. Access ist eine Desktop DB - deshalb sollte man keine zu hohen Ansprüche an sie stellen.
madmat hat folgendes geschrieben: | Angenommen ich bleibe bei jetziger Lösung, wie kann ich über Delphi eine leere DB erzeugen ? |
Wie Alfons-G sagte, das geht nicht so einfach. Auch mit der von mit faforisierten ADO Lösung geht das nicht, da diese vorraussetzt, das man sich beim Datenbankserver anmeldet bevor man eine Datenbank erstellt. Da das Desktopsystem Access keinen solchen server hat muss man sich direckt mit der Datenbank verbinden. Das setzt aber vorraus, das diese Existiert.
Mit speziellen Access Komponenten könnte das möglich sein.
madmat hat folgendes geschrieben: | Eine Routine soll abprüfen ob eine DB vorhanden ist, wenn nicht eine leere anlegen. |
Du könntest die lehre DB als rercource in deine EXE Linken und dann aus dieser auf die Platte speichern wenn du mal wieder eine leere DB benötigst.
Gruß
Klabautermann
|
|
Renegade
      
Beiträge: 358
Win XP Pro, Win 7 Beta
BDS 2006
|
Verfasst: Do 25.07.02 10:39
Und noch was Grundsätzliches zur Access-DB.
Mit dem was Klabautermann schrieb
Zitat: | Meines wissens frakmentieren Access DBs recht leicht und werden sehr schnell sehr groß. Allerdings weiß ich dies nur vom Hörensagen, |
hat er absolut recht. Access-DB blähen sich mit der Zeit sehr schnell auf. Vor allem dann, wenn du Inizes benutzt. Du mußt dich unbedingt um eine Reorganisation der DB kümmern - ansonsten wird die Performance eines Tages unerträglich. Ich meine mal gelesen zu haben, das MS dafür ein Tool zur verfügung stellt - habe es allerdings noch nicht gesehen.
Mfg
_________________ Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
|
|
madmat 
      
Beiträge: 28
|
Verfasst: Do 25.07.02 16:05
Titel: @Klabautermann
Dank an alle für die Unterstützung, ich werde es einfach mal ausprobieren und wenns Performance Probleme geben sollte weiss ich ja wo ich zu suchen habe
Klabautermann hat folgendes geschrieben: | Hallo,
Du könntest die lehre DB als rercource in deine EXE Linken und dann aus dieser auf die Platte speichern wenn du mal wieder eine leere DB benötigst.
|
Wie genau würde das gehen ?
_________________ mfg
madmat
Life is what happens while you ´re making other plans
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Do 25.07.02 17:06
Titel: Re: @Klabautermann
Hallo,
madmat hat folgendes geschrieben: | Wie genau würde das gehen ? |
da ich momentan nicht wirklich viel zeit habe lasse ich mal die Schweizer erklähren. In einem Beispiel linken sie eine EXE in eine Resource und führen diese aus (wozu sie erst auf die Platte gespeichert werden muss), das Prinzieb ist also das selbe wie bei dir.
Gruß
Klabautermann
|
|
madmat 
      
Beiträge: 28
|
Verfasst: Do 25.07.02 17:34
Danke, klappt bestens.
Kann mir zum Schluss noch jemand ´nen Tip geben wie ich die Abfrage von Passwort und Username der DB beim Programmstart unterdrücke ?
hat sich erledigt Loginprompt auf FALSE setzen
_________________ mfg
madmat
Life is what happens while you ´re making other plans
|
|
uli
      
Beiträge: 41
|
Verfasst: Di 10.09.02 14:41
Hallo madmat,
dein Eintrag ist schon einige Zeit her, aber vielleicht kannst du noch einen Tip gebrauchen.
Auf der Seite www.delphi.pari.bg findest du DB-Komponenten, mit denen du über DAO auf eine AccessDB zugreifen und auch erzeugen kannst.
Bei der DataBase-Komponente gibt es auch eine Methode zum Komprimieren bzw. Defragmentieren der DB.
Bei den Komponenten sind auch Beispiele dabei.
Gruß Uli.
|
|