Autor Beitrag
Michaela
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 57

WIN 2000, Linux ?
D6 Prof
BeitragVerfasst: Do 01.07.04 12:52 
Hallo. Vielleicht kann mir jemand von euch einen Tip geben.
Ich habe im DatenbankExplorer von Delfi ein Alias für eine Oracle Datenbank angelegt. Wenn ich die Datenbank im Explorer Öffne, bekomme ich auch Zugriff - also ist das da schon mal richtig.

Jetzt habe ich über ein TDatabase Objekt auf ein DataModule gezogen und mit dem Alias der Datenbank verknüpft.

Wenn ich die Datenbank jetzt öffnen will, bekomme ich den Fehler "EDatabaseError: Kein Datenbankname". Ich war aber der Meinung auf den greift er über das Alias zu. Oder muss ich trotzdem noch Database und Driver in TDatabase angeben.


Edit: Habe jetzt mal den Alias aus TDataset entfernt und den DB Namen und den Driver eingegeben. Dann erhalte ich zwar ein Anmeldefenster, Bekomme dann aber die Fehlermeldung:
"In Projekt sowieso ist eine Exception der Klasse: EDBEngineError aufgetreten. Meldung: Allgemeiner SQL_Fehler: ORA-03114: Nicht mit Oracle verbunden Alias: Aliasname. Prozess wurde abgebrochen."
:?:

Michaela
DannyVapid
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38


Delphi 5 Enterprise
BeitragVerfasst: Do 01.07.04 16:30 
Hallo,

also mal der Reihe nach.
Da Du Delphi 6 Pro nutzt gehe ich davon aus, daß Du über ODBC auf die Oracle-Datenbank zugreifen willst/musst.
D.h. Du musst natürlich erstmal in der ODBC-Verwaltung eine Datenquelle für den Server angelegt haben (Am besten unter System-DSN). Für diese ODBC-Datenquelle kannst Du dann einen Alias in der BDE anlegen.

Wenn hier soweit alles ok ist, versuch mal eine TTable-Komponente statt TDatabase.
Bei der TTable trägst Du Deinen BDE-Alias unter Database ein und versuchst anschliessend das TableName-Property
auf einen Tabellennamen der Datenbank zu setzen.
Wenn das auch funktioniert hat, kannst Du die TTable auch auf Active:=true setzen, d.h. Deine Verbindung steht.

Günstiger ist es natürlich mit einer TDatabase-Komponente zu arbeiten, weil Du dann den Alias nicht mehr brauchst,
aber versuch es erstmal so, wenn das geklappt hat sehen wir dann weiter.

Gruß
Danny
Michaela Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 57

WIN 2000, Linux ?
D6 Prof
BeitragVerfasst: Fr 02.07.04 07:41 
Hallo Danny,

Ich weiß zwar nicht, ob ich eine ODBC_Datenquelle angelegt habe ( habe einfach nur im Datenbankexplorer von Delphi einen neuen Alias mit dem Pfad der Datenbank, einem Read-only zugriff und als Driver ORACLE (mit Oracle für Microsoft oder wie der heißt hat es nicht funktioniert) angelegt. Wenn ich jetzt im DB-Explorer von Delphi auf die DB Klicke, bekomme ich eine Passwortabfrage und kann mir die Tabellen der DB ansehen. Also habe ich über den Alias doch Zugriff auf die DB :?:

Das ist ja das was ich nicht verstehe, dass der Zugriff im DBExplorer funktioniert, aber nicht über meine TDatabase Komponente.

ODer ist die ODBC_Datenquelle nur für die Komponente nötig, aber nicht für einen Zugriff über den Datenbankexplorer.

Michaela
DannyVapid
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38


Delphi 5 Enterprise
BeitragVerfasst: Fr 02.07.04 09:19 
Hallo Michaela,

ja kann schon sein, daß der DB-Explorer den direkten (nativen) Zugriff unterstützt.
Aber dann versuchen wir es nochmal anders. Wieder zurück zur TDatabase-Komponente.
Wenn Du einen Doppelklick direkt auf die Komponente durchführst, erscheint ein Konfigurationsdialog.
Hier gibst Du den Datenbanknamen (der frei wählbar ist) an und den Treibernamen (also ORACLE).
Den Alias lässt Du hier leer.

(Sollte er Dir bei den Treibern ORACLE garnicht anbieten, hast Du keinen nativen Zugriff auf die Datenbank, es bleibt Dir dann wohl oder übel nur der Umweg über ODBC)

Jetzt den Schalter "Vorgaben" betätigen... Das Parameterfenster füllt sich dann.
Die Parameter musst Du jetzt so setzen wie im Datenbank-Explorer.

Zum Schluß kannst Du noch festlegen, ob Du ein Login-Fenster sehen willst (wenn nicht, musst Du das Passwort in den
Parametern schon setzen...).

Soweit sogut, wenn alles richtig eingestellt ist, kannst Du das Fenster schliessen und die Datenbank lässt sich verbinden
(Connected auf true setzen).

Wie Du anschliessend auf die Datenbank zugreifst (Query, Table, StoredProc) bleibt natürlich Dir überlassen.
Ich hoffe das war jetzt einigermassen verständlich.

Viel Erfolg

Danny
Michaela Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 57

WIN 2000, Linux ?
D6 Prof
BeitragVerfasst: Fr 02.07.04 09:35 
Hallo. Also ich habe jetzt mal die Einstellungen meiner TDatabase Komonente hier:

Name = Datenbankname
Driver = ORACLE (wurde mir angezeigt :) )
Beim Klick auf Vorgaben habe ich folgende Angaben bekommen:
    SERVER Name = ORA_Server
    UserName = MyName
    Net Protocol = TNS
    Open Mode = Read Only // habe ich verändert da ich nur Lesezugriff habe
    Schema Cache Size = 8
    Langdriver =


ICh bekomme trotzdem die Fehlermeldung:"In Projekt sowieso ist eine Exception der Klasse: EDBEngineError aufgetreten. Meldung: Allgemeiner SQL_Fehler: ORA-03114: Nicht mit Oracle verbunden Alias: Aliasname. Prozess wurde abgebrochen."

Ich hatte das auch schon vorher probiert - ohne Erfolg, obwohl Deine Hilfe verständlich und ausführlich war.

Hast du vielleicht noch eine IDee??
Michaela
DannyVapid
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38


Delphi 5 Enterprise
BeitragVerfasst: Fr 02.07.04 09:48 
hi.
hast Du denn den richtigen ServerName und UserName eingetragen :?:
weil Du meintest hast nur den Open Mode verändert.
normalerweise müssten da auch noch mehr Parameter auftauchen. u.a. das Passwort.
Ansonsten war das schon die richtige Vorgehensweise.
Wie sind denn die Parameter im DB-Explorer?

tschau
Danny
Michaela Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 57

WIN 2000, Linux ?
D6 Prof
BeitragVerfasst: Fr 02.07.04 09:58 
Die Parameter im DBExplorer sind:
    Typ : Oracle
    Batch Count, Blob size, Blobs to cache, Enable BCD, Enable Integers, Enable Schema Cache : nach Voreinstellung
    Langdriver : leer
    List Synonyms: none
    Max Rows: -1
    Net Protocol: TNS
    Object Mode: True
    Open Mode: Read Only
    Rowset Size : 20
    Schema Cache Dir : leer
    Schema Cache Size : 8
    Schema Cache Time: -1
    Server Name: NameDBServer
    SQLPassthru mode: Shared Autocommit
    SQLqrymode: leer
    User NAme: leer


Wie gesagt. Da funktionierts.
MAlsleben
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 303

W2k,WinXP
D3 - DXE3 Enterprise
BeitragVerfasst: Fr 02.07.04 10:24 
Hi,

wenn das ganze im DB-Explorer funktioniert ist das ganze in Delphi doch irgendwie hinzukriegen. Ich würde mit der Database Komponete einfach mal auf diesen Alias verweisen.

Also Database Komponete aus der Palette BDE nehmen. Da mit rechter Maus und Datenbank-editor wählen. Dort den Alias Namen wie im DB-Explorer wählen und auf Vorgaben klicken. Damit übernimmt er aus dem DB-Explorer die Werte. Bei Name noch was reinschreiben, bei den Optionen die Haken drine lassen, auf o.k. klicken -> fertig. Zumindest hat das zum testen bei mir immer so funktioniert.

Gruß Micha.

_________________
Viele Wege führen nach Rom.
Michaela Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 57

WIN 2000, Linux ?
D6 Prof
BeitragVerfasst: Fr 02.07.04 10:37 
:oops:
Ähhmmm *schäm und in Boden versink*
Es geht jetzt. Hatte vorher vergessen einen Name anzugeben als ich das Alias benutzt habe...
DannyVapid
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38


Delphi 5 Enterprise
BeitragVerfasst: Fr 02.07.04 10:44 
hi.
ich glaube deine parameterliste ist unvollständig. ich bekomme nach einem Klick auf "Vorgaben" folgendes:

SERVER NAME=ORA_SERVER
USER NAME=MYNAME
NET PROTOCOL=TNS
OPEN MODE=READ/WRITE
SCHEMA CACHE SIZE=8
LANGDRIVER=
SQLQRYMODE=SERVER
SQLPASSTHRU MODE=SHARED AUTOCOMMIT
SCHEMA CACHE TIME=-1
MAX ROWS=-1
BATCH COUNT=200
ENABLE SCHEMA CACHE=FALSE
SCHEMA CACHE DIR=
ENABLE BCD=FALSE
ENABLE INTEGERS=FALSE
LIST SYNONYMS=NONE
ROWSET SIZE=20
BLOBS TO CACHE=64
BLOB SIZE=32
OBJECT MODE=TRUE
PASSWORD=

Das sind ein paar mehr als bei Dir, vielleicht hast Du auch nicht weiter
runtergescrollt. Es reicht, wenn ich SERVER NAME, USER NAME und PASSWORD auf
gültige Werte setze, dann kann ich sofort verbinden.

Also: SERVER NAME=NameDBServer
USER NAME=(einen Usernamen solltest Du ja haben)
PASSWORD=(geheim)

Wenn's dann nicht klappt steh ich auf dem Schlauch, sorry.

Danny