![]() |
AW: Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess
Zitat:
Zitat:
![]() |
AW: Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess
Zitat:
Zitat:
|
AW: Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess
Zitat:
Wenn ich vor dem Kompilieren die zur Entwurfszeit aktivierte Verbindung nicht kappe, bekomme ich mit der ausführbaren Datei (.exe) keine Verbindung. Wird die Verbindung dagegen zuvor gekappt, klappst mit der ausführbaren Datei. |
AW: Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess
Zitat:
![]() ![]() |
AW: Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess
Zitat:
|
AW: Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess
Genau deshalb starte ich meine Firebird-DB-Clients, die einerseits die Server-Variante, andererseits aber auch die Embedded-Variante bedienen sollen, mit Startparametern. Daraus ergibt sich dann, welche Client-DLL geladen wird:
Delphi-Quellcode:
wobei
Function TDatMod.VerbindenDatenbank : Boolean;
begin Result := False; If ConMain.Connected Then ConMain.Disconnect; Case GL.DB_Modus Of 0 : Begin // Embedded ConMain.ClientLibrary := GL.Pfad_Main + GL.ClientEName; ConMain.Server := ''; ConMain.Port := ''; End; 1 : Begin // Server Lokal ConMain.ClientLibrary := GL.Pfad_Main + GL.ClientName; ConMain.Server := 'LocalHost'; ConMain.Port := '3050'; End; 2 : Begin // Server Remote ConMain.ClientLibrary := GL.Pfad_Main + GL.ClientName; ConMain.Server := 'MyDBServer'; ConMain.Port := '3050'; End; End; ConMain.Database := GL.DB_Pfad + GL.DB_Name; ConMain.AutoCommit := True; ConMain.LoginPrompt := False; ConMain.Options.Charset := 'UTF8'; ConMain.Options.DefaultSortType := stCaseInsensitive; ConMain.Options.UseUnicode := True; ConMain.SQLDialect := 3; Try ConMain.Connect; Result := True; Except On e:exception DO GL.FehlerMeldung := 'Fehler beim Verbinden mit Datenbank: ' + e.Message; End; end;
Delphi-Quellcode:
Aufgerufen wird das Ganze dann beim Programmstart:
UNIT GlobalVars;
INTERFACE ... PUBLIC { Public-Deklarationen } Const ClientName = 'fbclient.dll'; ClientEName = 'fbclientE.dll'; ... Class Var ... DB_Modus : Byte; ...
Delphi-Quellcode:
Procedure TFormMain.FormActivate(Sender: TObject);
begin ... If Not DatMod.VerbindenDatenbank Then Begin ShowMessage(GL.FehlerMeldung); Close; Exit; End; ... end; |
AW: Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess
Zitat:
Deshalb und einzig und allein deshalb will ich dort eine möglichst allgemeingültige SQL Anweisung in DataSet.SQL stehen haben. Und nur deshalb suche ich nach der von mir genannten Möglichkeit. Meine SQL Kenntnisse erwerbe ich gerade nach Prinzip Hello World Programm mit dem Buch MySQL 4 Espresso vom Franzis Verlag (Franzis Taschenbuch) Auflage von 2004, ISBN 3-7723-6445-4. Sorry und nochmal Sorry und tausendfach Entschuldigung, das ich hier frage, andere tun das zwar um ihre Hausaufgaben im Informatikunterricht hier gemacht zu krigen und es findet sich dann immer ein Dummer, der Erklärungen gibt und sogar den ersehnten Quelltext postet. Aber ich muss hier die Hosenn runterlassen, weil ich dummerweise eben erst anfange, mich überhaupt mit Datenbanken zu beschäftigen. Ich kenne allerdings das alte DBase aus DOS Zeiten und habe damals auch Kommandodateien für diese Datenbank mit der eingebauten Programmiersprache geschrieben, aber Firebird ist damit nun mal absolut nicht zu vergleichen. Sorry und nochmals Sorry also, dafür das ich mich erst jetzt mit Firebird beschäftige. Die mitglieferten Dokus taugen bei diesem Kenntnisstand absolut gar nix für mich, ich brauch die Schritt für Schritt Anleitung wie damals als ich Pascal gelernt habe und vom Hello World Programm ausgehend meine Pascal Kenntnisse schrittweise Anweisung für Anweisung erworben habe. Warum gibt es diese Schritt für Schritt Anleitungen nicht auch für all die andere Software???? Kann es wahrscheinlich nicht, weil die Hersteller der Software ihr Geld mit dem Support verdienen. Somit dürfen die gar nicht solche Dokus rausgeben, denn dann würde der Geld bringende Support nicht mehr benötigt. Warum also, wie in einem anderen Thread hier gefordert, für Firebird spenden? Mit IBExpert kann ich grad mal die Datenbank erstellen, die die Tabellen aufnimmt. Den Feldeditor hatte ich schon mal aufgerufen, hab aber vergessen, wie. Deshalb die SQL Anweisung "CREATE TABLE ... ". Stimmt also, die dumme Bemerkung mit den nicht vorhandenen Grundlagen. Wer natürlich auf Arbeit alles in einer Schulung vorgekaut kriegt, in der bezahlten Arbeitszeit, wie ich es mir in meinem stillen Kämmerlein nur erträumen kann, ist unfähig, die Mühe nachzuvollziehen, die ich hier zur Einarbeitung aufbringen muss. Ich sollte mich wirklich somit besser mit was anderem beschäftigen, besser das derzeit schöne sonnige Wetter draußen genießen. Werd ich wohl nach diesem Post auch machen, bin nämlich arbeitslos! Andererseits könnte man natürlich bei adäquatem Support sich auch mal in Softwaretechnologien einarbeiten, wenn man schon einen PC hat, auf dem ein Entwicklungssystem wie Delphi installiert ist. Ich benutze ein 32 Bit Windows XP Professional, nix 64 Bit. Meine CPU kann nur 32 Bit. Ich habe keinen anderen Quelltext, als den, der am Anfang meines Threads gepostet ist. Konfig Dateien in Firebird habe ich unverändert gelassen. Alle Einstellungen habe ich ausschließlich im Objektinspektor vorgenommen. Ich weiß nicht mehr weiter. Ich hab die Datenbank jetzt, die Tabelle steht auch, ich kann aber keine Daten in mein DBGrid eingeben. Und der Start der DB Anwendung funktioniert nur innerhalb der IDE, warum nicht auch außerhalb? Zitat:
Zitat:
Und da ich mit IBExpert noch unsicher in der Bedienung bin, habe ich als die Tabelle in meiner Datenbank noch nicht existiert hat, die SQL Anweisung zum Erzeugen der Tabelle geschrieben. Mir ist durchaus bewusst, das ich diese Anweisung nun für diese Tabelle nicht mehr brauche und rausschmeißen kann. Aber leer darf das besagte SQL Feld auch nicht sein. So brauche ich jetzt eine Anweisung die dafür sorgt, das ich die Daten der Tabelle angezeigt kriege, im Zweifelsfall leere Spalten und ich will außerdem nun Daten eingeben können. Ich will also die Tabelle nicht bei jedem Start anlegen, sondern nur falls sie noch nicht angelegt ist. Was ich suche, ist somit eine Prüfung, ob die Tabelle Schon angelegt ist. Wenn nicht, dann will ich sie anlegen, wenn erledigt, soll diese Anweisung übersprungen werden. Stattdessen soll dann die Anzeige der Daten vorbereitet werden und mir eine Möglichkeit eröffnet werden, nun meine Daten einzugeben. Die Firebird Dokus sind zu knapp für mich. Ich brauch das detaillierter. Eben so wi eine Anleitung beginnend mit dem Hello World Programm, dann Schritt für Schritt weiter, jede einzelne Anweisung (SQL, Konfigparameter, ...). |
AW: Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess
Zitat:
Im allgemeinen wird eine Datenbank incl. der zugehörigen Tabellen einmal erstellt, und dann werden nur noch Daten hin und her geschaufelt. (daß man manchmal doch noch eine weitere Tabelle oder ein paar weitere Felder benötigt, klammere ich mal aus) Wenn als Meldung kommt "SQL Anweisung ist leer", dann gibt es irgendwo in Deinen DBKomponenten einen SQL-Text (ich hab keinen gesehen), der an die Datenbank gesendet wird. Warum, wieso und wann, das seh' ich nicht. In meinen Programmen, gibt es nur eine Connection und eine query-Komponente. Dieser ganze DBGRid und Datasource-Klimbim ist meiner Meinung nach vollkommen überflüssig. und augenscheinlich entwickeln diese bei Dir ja auch ein reges Eigenleben. Übrigens solltest du Dich von diesen Analogien Datei/Datenbank/DBase-Tabell/Datei.. schnellstens verabschieden. Fall Du wirklich eine Datei identifizieren kannst, die mit Deinen Daten zu tun hat, dann ist das schön, aber grundsätzlich ist eine Datenbank eine BlackBox, die nur über SQL-Befehle zugängig ist. (Perlsau hat ja auch hireichend beschrieben, das seine Programme mit embedded und Server-Datenbanken umgehen können ohne neu geschrieben werden zu müssen. Und das ist eigentlich State of the Art) Zitat:
Und für den Einstig, der Dir als ex-DBase Benutzer nicht so schwer fallen dürfte, der ![]() Und wenn Du da Verständnisprobleme hast, dann kannst Du gerne hier fragen. Gruß K-H |
AW: Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess
Zitat:
Delphi-Quellcode:
Die .ini-Datei wird dann wie folgt ausgelesen:
[Sicherheit]
Server= Port= LoginPrompt=False Client=fbembed.dll [Database] RIS=D:\Delphi_Projekte\RIS_FB\RIS.FDB RISH=D:\Delphi_Projekte\RIS_FB\RISH.FDB
Delphi-Quellcode:
Ini := TIniFile.Create(HelpPfad+'\FB.INI');
UniConnection1.Server := Ini.ReadString('Sicherheit','Server', ''); UniConnection1.Port := Ini.ReadInteger('Sicherheit','Port', 0); UniConnection1.SpecificOptions.Values['ClientLibrary'] := Ini.ReadString('Sicherheit','Client', 'fbembed.dll'); UniConnection1.LoginPrompt := Ini.ReadBool('Sicherheit','LoginPrompt', False); UniConnection2.Server := UniConnection1.Server; UniConnection2.Port := UniConnection1.Port; UniConnection2.SpecificOptions.Values['ClientLibrary'] := UniConnection1.SpecificOptions.Values['ClientLibrary']; UniConnection2.LoginPrompt := UniConnection1.LoginPrompt; // Aktuelle Daten UniConnection1.Database := Ini.ReadString('Database','RIS', 'RIS.FDB'); // Historische Daten UniConnection2.Database := Ini.ReadString('Database','RISH', 'RISH.FDB'); // Existenz der Datenbanken prüfen if not FileExists(UniConnection1.Database) then begin Messagedlg('Datenbank '+UniConnection1.Database+ ' nicht gefunden', mtError, [mbOK,mbHelp], 216); Application.Terminate; end; if not FileExists(UniConnection2.Database) then begin Messagedlg('Datenbank '+UniConnection2.Database+ ' nicht gefunden', mtError, [mbOK, mbHelp], 216); Application.Terminate; end; try if not UniConnection1.Connected then UniConnection1.Open; except on Exception do begin Messagedlg('Verbindung zur aktuellen Datenbank fehlgeschlagen', mtError, [mbOK,mbHelp],25); Application.Terminate; end; end; try if not UniConnection2.Connected then UniConnection2.Open; except on Exception do begin Messagedlg('Verbindung zur historischen Datenbank fehlgeschlagen', mtError, [mbOK,mbHelp],25); Application.Terminate; end; end; Ini.Free; CFGIni.Free; |
AW: Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz