Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum
>
Entwickler
>
Real Basic 2005: Datenbank auf anderem Rechner starten?
Real Basic 2005: Datenbank auf anderem Rechner starten?
Z
09.07.05
15:39
Ich hab mir in Real Basic 2005:mac eine einfache Datenbank erstellt, das ganze compiliert und es funktioniert.
Kopiere ich jetzt alle Ordner des Projektes (incl. der comilierten Anwendung und der Datenbank - Datei) auf einen anderen Rechner, lässt sich die Anwendung nicht starten, mit der Fehlermeldung, dass die Datenbank nicht gefunden würde.
Hab danach einen neuen Benutzer an meinem Rechner installiert, auf dem eigentlich RB 2005 drauf ist, und das Programm vom anderen Benutzer aus ausgeführt. Auch hier geht es nicht.
Gibt es da einen Trick oder Kniff, den man beachten muss, damit diese Anwendungen auf anderen Rechner/Benutzern laufen?
(PS: Es kann nur an der Datenbank liegen. Andere Programme die ich mit RB2005 ohne Datenbank - Unterstützung erstellt habe, laufen problemlos auf anderen Macs.)
Hilfreich?
0
Kommentare
Z
09.07.05
15:43
Hier noch ein Bild der Fehlermeldung:
Hilfreich?
0
rofl
09.07.05
15:54
Scheint so, als wäre der Pfad zu DB wohl fest verdrahtet. Was sagen die RB Foren?
Hilfreich?
0
polonius
09.07.05
19:08
Wie ermittelst du den Pfad zu deiner Datenbank? Kannst du vielleicht diesen Codeausschnitt zeigen?
Hilfreich?
0
Jan_L
09.07.05
19:58
Gib mal her den Code
Vielleicht solltest du es so machen:
dim db as new database
dim f as folderItem
f = //hier jetzt der Pfad deiner DB (schau mal unter "FolerItem Klasse" in der Doku)
if f nil then
db.databaseFile = f
if vocdb.createDatabaseFile then msgbox "DB erstellt!"
end if
Hilfreich?
0
Jan_L
09.07.05
20:00
if vocdb.createDatabaseFile then msgbox "DB erstellt!" sollte natürlich if
db
.createDatabaseFile then msgbox "DB erstellt!" heißen
Ist halt mal eben aus einem Programm von mir kopiert
Hilfreich?
0
Z
09.07.05
20:12
polonius
Wie ermittelst du den Pfad zu deiner Datenbank? Kannst du vielleicht diesen Codeausschnitt zeigen?
hmmm - gar kein Pfad?
Ich hab die Datenbank neu erstellt mit: Project
Add
Database
Und lag die Datenbank im Projektpfad.
Hier der passende Screenshot.
Hilfreich?
0
Z
09.07.05
20:13
@Jan_L: Wenn ich das so mache, ist der Pfad doch hardcoded? Das will ich ja auch nicht.
Hilfreich?
0
Jan_L
09.07.05
20:18
Das Problem ahtte ich am Anfang auch.
Mit "Project
Add
Database" bewirksts du, dass du einen (afaik absoluten) Link zur Datenbank, die du bei deinem Benutzer hast, erstellst.
D.h. auf anderen Macs/bei anderen Benutzern geht's nicht, weil sie genau diese Datei nicht haben. Das war auch mein Denkfehler.
Du hast einen Link auf
/Users/Z/OrdnerWoDeinProjektIst/deineDB
. Hat irgendjemand anders diese Datei? Ehr nicht
.
Also musst du es wirklich übern Code machen.
Was meinst du mit "hardcoded"?????
Grüße
Jan_L
Hilfreich?
0
Jan_L
09.07.05
20:21
OK, das mit dem Link war nicht gut erklärt.
Ich stell mir das so vor (kann auch anders sein!):
Du hast ein Objekt der Klasse "RealDatabase" (wenn du diesen Datenbank-Typ benutzt. Ich hab nur RB 5.5). Die Eigenschaft DatabaseFile von diesem Objekt ist jetzt eben diese eine Datei.
Bringt also auf diese Art & Weise nix.
Jan_L
Hilfreich?
0
Z
09.07.05
20:28
ich hab die datenbank - Datei ja mitkopiert gehabt.
Hab jetzt in der Doku noch mal nachgesehen, und den entsprechenden Code eingebaut:
Dim dbFile as FolderItem
Dim db as REALSQLdatabase
db=New REALSQLdatabase
dbFile = GetFolderItem("datenbank.rsd")
db.DatabaseFile=dbFile
If db.Connect() then
//proceed with database operations here..
else
Beep
MsgBox "Error message: "+db.ErrorMessage
end if
Er brachte keine Fehlermeldung in der Umgebung, aber nach dem gebuildet und im anderen Benutzer, wieder die gleiche Fehlermeldung.
Hilfreich?
0
Z
09.07.05
20:30
Mit "hardcoded" meine ich, wenn ein Pfad fest vorm compilieren im Code festgelegt ist, und nicht durch den Benutzer geändert werden kann, da fest im Code.
Hilfreich?
0
Jan_L
09.07.05
20:44
Probier mal meinen Code von oben ^^
Warum sollte der User den Pfad denn nicht selbst bestimmen können? Kannst ja nen FolderItemDialog reinmachen.
Hilfreich?
0
Z
09.07.05
21:31
Nee, Dein Code geht auch nicht. Er zeigt ein Bug an.
Hilfreich?
0
Jan_L
09.07.05
21:37
if f
nil then
...
(==Wenn die Date nicht nicht existiert
)
Hilfreich?
0
Jan_L
09.07.05
21:38
ARGH!!!!
Ich fall immer wieder drauf rein! Spitze klammern werden geblockt X(
Also, es heißt: if f (spitzeklemmerauf)(spitzeklammerzu) nil then ...
Hilfreich?
0
Z
09.07.05
22:03
ne geht auch nicht.
hätte nicht gedacht, dass das so Probleme macht
Hilfreich?
0
Z
09.07.05
22:04
ich hab zwar dieses mal vergessen vocdb zu db abzuändern, aber so weit kam er ja gar nicht
Hilfreich?
0
polonius
09.07.05
23:47
Möglicherweise kann man nicht direkt mit der Database-Klasse arbeiten. In der Sprachreferenz steht unter Database folgendes:
A Database object represents an open database that can be accessed by REALbasic's "front-end" database commands. You can create or open a REALSQL database using the
REALSQLdatabase
class.
Die meisten Code-Beispiele der Sprachreferenz verwenden die REALSQLdatabase-Klasse.
Ich hatte mal Schwierigkeiten, mich mit meiner lokalen MySQL-Datenbank zu verbinden, bis ich gemerkt hab, dass ich die MySQLDatabase Klasse verwenden musste...
Ansonsten könnte evtl. ein Problem mit Zugriffsrechten vorliegen, oder es ist ein Bug in RB.
Hilfreich?
0
Jan_L
10.07.05
00:15
polonius
Möglicherweise kann man nicht direkt mit der Database-Klasse arbeiten. In der Sprachreferenz steht unter Database folgendes:
A Database object represents an open database that can be accessed by REALbasic’s "front-end" database commands. You can create or open a REALSQL database using the
REALSQLdatabase
class.
Die meisten Code-Beispiele der Sprachreferenz verwenden die REALSQLdatabase-Klasse.
Ich hatte mal Schwierigkeiten, mich mit meiner lokalen MySQL-Datenbank zu verbinden, bis ich gemerkt hab, dass ich die MySQLDatabase Klasse verwenden musste...
Ansonsten könnte evtl. ein Problem mit Zugriffsrechten vorliegen, oder es ist ein Bug in RB.
Es gibt in RB verschiedene KLassen, die Datenbanken darstellen, hängt auch von der Version ab. Bugs in RB gibt es zwar zu Genüge, aber das ist keiner
und an den Zugriffsrechten kann es auch nciht liegen.
Z
Klappt es denn nun???
Hilfreich?
0
Z
10.07.05
01:53
Jan_L
Z
Klappt es denn nun???
Leider nein.
Hilfreich?
0
Jan_L
10.07.05
22:07
So geht's aber sicher (grad getestet):
dim db as new realDatabase
dim f as folderItem
f = getfolderitem("hallo.rbd")
if f nil then
db.DatabaseFile = f
if db.createDatabaseFile then msgbox "DB erstellt!"
end if
Hilfreich?
0
Z
10.07.05
23:48
das funktioniert auch nicht. bzw. mein ursprünglicher code funktioniert dann nicht mehr. hab heute vormittag und mittag ganzen zeit dran getüffelt und das da oben auch schon so mehrmals versucht.
im moment hab ich es so gelöst, dass ich die datenbank im finder umbenenne, aus dem projekt lösche, dann mit add
Database
select neu hinzufüge.
Dann kann man es weitergeben, wenn der Ordner beim Zielrechner genauso lautet.
Also nur Workaround, noch keine richtige Lösung.
Hilfreich?
0
Jan_L
11.07.05
00:21
Du vewendest anscheinend gar nicht die REALdatabase, sondern irgendwas anderes (REALbasic unterszützt ja viel). Hast du die Pro-Version? Da hat sich vielleicht auch was zwischen 5.5 und 2005 geändert
Da kann ich dir jetzt leider nicht weiterhelfen.
REALSQLDatabase scheint eine neue Klasse zu sein. Ich kenne sie zumindest nicht.
Jan_L
Hilfreich?
0
Jan_L
11.07.05
00:24
Könntest du mir mal alle Methode + Eigenschaften von RealSQLDatabase posten?
Hilfreich?
0
Z
11.07.05
09:41
Hmm - ich nutze nicht das alte RBDB (RealBasic DataBase), sondern das neue in RB 2005, das auf Basis von SQLite entwickelt wurde. Sieht man auch an der Dateiendung. Heisst jetzt .rsd und nicht mehr .rbd
Was genau soll ich posten? Soll ich einfach mal das gesamte Projekt zippen und hochladen?
Hilfreich?
0
Jan_L
11.07.05
16:45
Nein, ich meinte das du einfach die Doku-Seite von RealSQLDatabase postest.
Die REALDatabase setzt auf jeden Fall auch auf SQLite auf. Aber ich glaub, ich kann dir nicht mehr helfen, weil ich halt nur RB 5.5 hab (was sich bald ändern wird).
Hilfreich?
0
Stefan Sicurella
11.07.05
17:30
So gehts:
Dim f as folderItem
db=New REALSQLDatabase
f=getfolderItem("Daten")
f =f.child("Datenbankname")
db.DatabaseFile=f
if not db.connect() then
db = nil
msgBox "Fehler beim Öffnen der Datenbank"
end if
natürlich nur wenn du die SQLlite benutzt ansonsten schreibt du halt db=RealDatabse
Hilfreich?
0
polonius
11.07.05
18:08
Jan_L
Es gibt in RB verschiedene KLassen, die Datenbanken darstellen, hängt auch von der Version ab. Bugs in RB gibt es zwar zu Genüge, aber das ist keiner
und an den Zugriffsrechten kann es auch nciht liegen.
Es ist mir schon klar, dass es in RB verschiedene Klassen für den Datenbankzugriff gibt. Und die Database Klasse ist, so wie ich das sehe, eine gemeinsame Basisklasse für die DB-Funktionalität. Um eine bestimmte DB-Engine nutzen zu können, muss man die entsprechende Klasse nutzen, also für das neue Datenbankformat die REAL
SQL
database (siehe Stefans Beispiel) und nicht die REALdatabase, oder die Database Klasse. Und wenn du die neue DB nicht mit der REALSQLdatabase Klasse nutzen kannst, stimmt etwas nicht. Das wollte ich mit meinem vorigen Beitrag aufzeigen, was mir aber offenbar nicht gelungen ist.
Hilfreich?
0
Z
12.07.05
20:45
Stefan Sicurella
So gehts:
Dim f as folderItem
db=New REALSQLDatabase
klappt bei immer noch nicht. wo genau fügt Ihr den Code hinzu? Ich füge es immer bei der Applikation
Event Handler
Open ein.
Bei dem Code - Schnippsel fehlt doch sicher auch noch ein DIM für db, oder?
Hilfreich?
0
Stefan Sicurella
12.07.05
20:53
Nein, nein... du machst eine Methode mit Namen:
zB Datenbank_open
dann eine globale Variable deklarieren DB as RealDatabase oder as REALSQLDatabase oder as RealDatabaseOldFormat
du musst halt wissen was deine DB ist...
Dann schreibst du das rein was ich unten geschrieben hatte.
wenn du jetzt die Datenbank benötigst öffnest du sie mit dem Aufruf der Methode "Datenbank_open"
In der integrierten Hilfe sind doch solche Beispiele drin
Gruß
Stefan
Hilfreich?
0
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.
iPod-Vater Tony Fadell wollte Sonos kaufen – St...
macOS 15.2 steht ab sofort zur Verfügung
Vor 18 Jahren: iPhone, Apple TV und "Apple Inc."
Update-Abend: macOS 15.1.1, iOS 18.1.1, iPadOS ...
PIN-Code erraten: Dauer
Doch keine finalen Versionen: Apple gibt zweite...
iOS 18.3 mit Hinweisen auf neue Apple-Hardware
Mac-Wartung: Alte Kernel-Erweiterungen entfernen