Autor Beitrag
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 27.09.02 08:15 
Hallo Leute,

bin zwar froh, wenn bei mir alles klappt, aber jetzt habe ich ein Problem, das im realen Einsatz wohl auch auftauchen wird. Meine Datenbank lag auf Laufwerk E: Die Betonung liegt auf lag. :D

Hatte kurzzeitig 2 Festplatten im Rechner, Laufwerk bzw. Partition C: und E: war die eine, Partition D: die andere. Letztere habe ich dann ausgebaut, so daß jetzt eine Festplatte vorhanden ist, (C: und D:).

Beim Anlegen der DB habe ich gesagt, die DB sei auf E:. Durch den Wegfall der zweiten Platte ist das aber jetzt D:

Meine Frage ist jetzt: Wie soll ich das NACHTRÄGLICH wieder ändern, und vor allem wie hätte ich es von Anfang an besser machen sollen ? Da ich mich so langsam mit einer Netzwerk-DB befassen will ist diese Frage für mich schon bedeutsam.

Gruß
Hansa
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 27.09.02 08:22 
Hi,

man soll nicht zu schnell alles abschicken. :D Mit Unregister / Register Database kann ich natürlich wieder auf die DB zugreifen, aber was ist im Netz, falls an einer WS das Netzlaufwerk F: und auf dem anderen X: ist.

Mit Unregister/register muß ich ja auch noch einige Parameter angeben. Das ist auch nicht die feine englische Art.

Gruß
Hansa
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Fr 27.09.02 09:05 
Lege doch definitiv fest im Netzwerk auf welchen Laufwerk Dein Volume mit der Datenbank connected wird. Dann hast Du keine Probleme, oder Du machst ein Konfigurationsfenster, wo festgelegt wird wo die Datenbank liegt. Das schreibst Du in einen Alias und diesen Alias verwendest Du im ganzen Programm, so mußt Du nur an einer Stelle einen Wert ändern, der dann für das ganze Programm Gültigkeit hat.
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 27.09.02 09:26 
Hallo bis11,

habe es geahnt, das gibt noch mehr Ärger. In meinem Quellcode war natürlich auch noch E: drin. Habe das geändert, aber er sucht immer noch nach E: Falls ich versuche mit Delphi an den Quellcode zu kommen sucht er direkt Laufwerk E: und Delphi hängt sich auf. Deshalb mußte ich das mit dem Editor in der DFM ändern. Habe keine Zeile Quelltext, in der E: steht, wieso sucht er immer noch danach ? DCU habe ich gelöscht.

Gruß
Hansa
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Fr 27.09.02 09:50 
Wenn in der bestehenden Datenbank das auch noch irgendwo hinterlegt ist, suc´ht er natürlich noch nach dem Laufwerksbuchstaben E:. Was für eine Datenbank benutzt Du denn ?
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 27.09.02 09:53 
Firebird

Starte ich IBconsole, ist die DB bei D: (die vorher bei E: war), mit Unregister/Register geändert !

Gruß
Hansa
:)
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Fr 27.09.02 10:01 
Dann kann ich mir nur noch vorstellen das Du irgendwo eine Abfrage drin hast, die Dir mal als Ergebnis E: geliefert hat und Du diesen Wert irgendwo fest gespeichert hast (ini-Dateien).

Das andere was ich mir noch vorstellen kann ist, das Du den Pfad hard verdrahtet hast in den Eigenschaften von Deinen Kompo's.

Wenn die beiden Sachen auch nicht helfen, dann poste mal das Stück Sourcecode wo er Dir den Fehler bringt.
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 27.09.02 10:12 
Hallo bis11,

bin jetzt so vorgegangen : neues Projekt, lege meine DB-Kompos drauf.
Bei database habe ich den aliasnamen eingegeben, prompt steht bei Database-Name wieder E: drin. In der DB selber ist er bei D: Preisfrage : Wo kommt das E: her? :mrgreen: Im Verzeichnis mit dem Quellcode steht nirgendwo ein E:, zumindest nicht als lesbarer Text.

Habe 2 registrierte DB's, die zeigt er mir auch im Alias-Fenster an, aber als Laufwerk nimmt er E: Der Alias wird anscheinend nicht aus der DB ausgelesen, sondern aus irgendeiner Delphi - Datei.

Liefere den Quellcode nach, bevor das hier in Nirwana landet. Delphi sucht schon wieder die DB auf E: und reagiert nicht mehr.

Gruß
Hansa
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 27.09.02 10:21 
Hi bis11,

Delphi - Task mußte ich tatsächlich abbrechen !

also gut, wenn schon dann alles: :mrgreen:
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
object DataMod: TDataMod
  OldCreateOrder = False
  Left = 192
  Top = 107
  Height = 203
  Width = 383
  object DataBase: TpFIBDatabase
    Connected = True
    DBName = 'd:\8.0\db\GFGHDB.GDB'         <-------!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    DBParams.Strings = (
      'lc_ctype=ISO8859_1'
      'user_name=SYSDBA'
      'password=masterkey'
      'sql_role_name=')
    DefaultTransaction = Transaction
    SQLDialect = 3
    Timeout = 0
    AliasName = 'GFGHDB'                            <-------!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                                                 Wähle ich diesen Alias im OI aus kommt als Name E:\......

    Left = 16
    Top = 16
  end
  object KGdatensatz: TpFIBDataSet
    Database = DataBase
    Transaction = Transaction
    Options = [poTrimCharFields, poRefreshAfterPost, poStartTransaction, poAutoFormatFields, poAllowChangeSqls]
    BufferChunks = 32
    CachedUpdates = False
    UniDirectional = False
    UpdateRecordTypes = [cusUnmodified, cusModified, cusInserted]
    UpdateSQL.Strings = (
      'UPDATE KG8 SET '
      '    NR = ?NR,'
      '    BEZ = ?BEZ'
      ' WHERE     '
      '            ID = ?OLD_ID'
      '    ')
    DeleteSQL.Strings = (
      'DELETE FROM KG8'
      'WHERE     '
      '            ID = ?OLD_ID'
      '    ')
    InsertSQL.Strings = (
      'INSERT INTO KG8('
      '    ID,'
      '    NR,'
      '    BEZ'
      ')'
      'VALUES('
      '    ?ID,'
      '    ?NR,'
      '    ?BEZ'
      ')')
    RefreshSQL.Strings = (
      'select * from KG8'
      ' WHERE '
      '    (    '
      '            KG8.ID = ?OLD_ID'
      '    )')
    SelectSQL.Strings = (
      'select * from KG8')
    Active = True
    DefaultFormats.DateTimeDisplayFormat = 'dd.mm.yyyy'
    AutoUpdateOptions.GeneratorName = 'GEN_KG8_ID'
    AutoUpdateOptions.WhenGetGenID = wgOnNewRecord
    Left = 296
    Top = 16
    object KGdatensatzID: TFIBIntegerField
      FieldName = 'ID'
    end
    object KGdatensatzNR: TFIBIntegerField
      FieldName = 'NR'
    end
    object KGdatensatzBEZ: TFIBStringField
      FieldName = 'BEZ'
      Size = 25
      EmptyStrToNull = True
    end
  end
  object Transaction: TpFIBTransaction
    Active = True
    DefaultDatabase = DataBase
    TimeoutAction = TARollback
    Left = 96
    Top = 16
  end
  object KGsource: TDataSource
    DataSet = KGdatensatz
    Left = 184
    Top = 16
  end
  object KuSource: TDataSource
    DataSet = KuDatensatz
    Left = 184
    Top = 88
  end
  object KuDatensatz: TpFIBDataSet
    Database = DataBase
    Transaction = Transaction
    Options = [poTrimCharFields, poRefreshAfterPost, poStartTransaction, poAutoFormatFields, poAllowChangeSqls]
    BufferChunks = 32
    CachedUpdates = False
    UniDirectional = False
    UpdateRecordTypes = [cusUnmodified, cusModified, cusInserted]
    UpdateSQL.Strings = (
      'UPDATE KUNDE8 SET '
      '    IDKGH = ?IDKGH,'
      '    IDKGU = ?IDKGU,'
      '    NR = ?NR,'
      '    ANREDE = ?ANREDE,'
      '    NAME = ?NAME,'
      '    STRASSE = ?STRASSE,'
      '    ORT = ?ORT'
      ' WHERE     '
      '            ID = ?OLD_ID'
      '    ')
    DeleteSQL.Strings = (
      'DELETE FROM KUNDE8'
      'WHERE     '
      '            ID = ?OLD_ID'
      '    ')
    InsertSQL.Strings = (
      'INSERT INTO KUNDE8('
      '    ID,'
      '    IDKGH,'
      '    IDKGU,'
      '    NR,'
      '    ANREDE,'
      '    NAME,'
      '    STRASSE,'
      '    ORT'
      ')'
      'VALUES('
      '    ?ID,'
      '    ?IDKGH,'
      '    ?IDKGU,'
      '    ?NR,'
      '    ?ANREDE,'
      '    ?NAME,'
      '    ?STRASSE,'
      '    ?ORT'
      ')')
    RefreshSQL.Strings = (
      'select * from KUNDE8'
      ' WHERE '
      '    (    '
      '            KUNDE8.ID = ?OLD_ID'
      '    )')
    SelectSQL.Strings = (
      'select * from KUNDE8')
    Active = True
    DataSource = KGsource
    DefaultFormats.DateTimeDisplayFormat = 'dd.mm.yyyy'
    AutoUpdateOptions.GeneratorName = 'GEN_KUNDE8_ID'
    AutoUpdateOptions.WhenGetGenID = wgOnNewRecord
    Left = 296
    Top = 88
    object KuDatensatzID: TFIBIntegerField
      FieldName = 'ID'
    end
    object KuDatensatzIDKGH: TFIBIntegerField
      FieldName = 'IDKGH'
    end
    object KuDatensatzIDKGU: TFIBIntegerField
      FieldName = 'IDKGU'
    end
    object KuDatensatzNR: TFIBIntegerField
      FieldName = 'NR'
    end
    object KuDatensatzANREDE: TFIBStringField
      FieldName = 'ANREDE'
      Size = 30
      EmptyStrToNull = True
    end
    object KuDatensatzNAME: TFIBStringField
      FieldName = 'NAME'
      Size = 30
      EmptyStrToNull = True
    end
    object KuDatensatzSTRASSE: TFIBStringField
      FieldName = 'STRASSE'
      Size = 30
      EmptyStrToNull = True
    end
    object KuDatensatzORT: TFIBStringField
      FieldName = 'ORT'
      Size = 30
      EmptyStrToNull = True
    end
  end
end
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Fr 27.09.02 10:25 
Hi
das Problem kommt mir irgendwie bekannt vor. :roll: Ich weiss ja net wie das bei den FIB-Komponenten funktioniert, aber der Zugriff über Alias ist bei IBX gar nicht möglich.
Die Alias Informationen werden ja irgendwo auf dem Server-PC gespeichert. Wenn der aber gerade nicht verfügbar ist, dann sind auch keine Alias-Infos vorhanden.
Wenn nun die DB-Komponente mitkriegt, dass da noch ein lokaler Server läuft, könnte sie die Alias-Infos auch von dem abrufen. Aber ob sie identisch sind ist die andere Frage.
Generell verfahre ich so, dass ich während der Entwicklung die Datenbank über Pfad/Dateiname in der DB Kompo direkt eintrage.
Zur Laufzeit gibts einen Dialog in dem diese Einstellungen geändert werden können, falls der Connect fehlschlägt.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 27.09.02 10:32 
Hi Lothar,

man sieht doch im Quelltext schön wie der Alias heißt und was er daraus macht, nämlich E:\.... D.h. er wandelt den Alias auch lokal in den Pfadnamen, aber das LW stimmt nicht, vorher war es zwar E:, das gibts aber im Moment nicht. Irgendwo hat er sich das "ehemalige" LW E: gemerkt, aber wo ?

E: war auch kein Netzlaufwerk, sonst hätte er den Namen wahrscheinlich in \\SERVER .... umgewandelt.

Gruß
Hansa
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Fr 27.09.02 10:38 
hansa hat folgendes geschrieben:
Irgendwo hat er sich das "ehemalige" LW E: gemerkt, aber wo ?

Ist genau mein Reden. Irgenwo macht er was, was ich nicht unter Kontrolle habe, weils extern passiert. Warum also diese Alias-Geschichte überhaupt?

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 27.09.02 11:19 
Hi Lothar,

Du meinst also : Besser alles funktioniert und keiner weiß warum ? :mrgreen: Werde das im Moment wirklich so machen. Habe alles durchsucht (Borland, BPL, Delphi-Verzeichnisse). Das E: ist irgendwo compiliert drin. Dann muß ich eben tatsächlich explizit den LW-Buchstaben mit angeben.

Der Nachteil ist dann, falls mein Programm auf einem anderen Laufwerk als dem vordefinierten läuft -> neu compilieren und Versions-HickHack. :twisted:

Bis dann
Hansa
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Fr 27.09.02 12:46 
hansa hat folgendes geschrieben:
Der Nachteil ist dann, falls mein Programm auf einem anderen Laufwerk als dem vordefinierten läuft -> neu compilieren und Versions-HickHack. :twisted:

Wieso denn? Willst du etwa ernsthaft die Verbindung zur DB im Programm fest codieren :hair:
Beim Erzeugen des Datenmoduls, Verbindungsdaten aus Ini-Datei lesen. Wenn nicht vorhanden, Optionsdialog anzeigen, wenn vorhanden aber keine Verbindung möglich, ebenso. :wink:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
   repeat
       with frmOption do begin
           DBS.DatabaseName := edtSFHPath.Text;
           DBS.Params.Values['User_Name']  := edtSFHUser.Text;
           DBS.Params.Values['Password']   := edtSFHPasswd.Text;
           //weitere parameter
           //Lesen und entschlüsseln bzw Schreiben und verschlüsseln
           //der ini findet in TfrmOption statt
       end;
       try
           DBS.Open;
           ibtS.StartTransaction;
           LoopEnd      := True;
       except
           on E: EIBClientError do begin
               frmOption.Caption := E.Message;
             frmOption.ShowModal;
             if  frmOption.MOdalResult = mrCancel then
                 LoopEnd := True;
           end;
       end;
   until LoopEnd = True;


Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 27.09.02 14:12 
Hi Lothar,

Aja, soweit bin ich noch nicht ganz. Kämpfe im Moment noch mit relativ einfachen Sachen und an vielen Stellen, um den Überblick zu kriegen. :oops: Wenigstens gehen meine Semaphoren bereits, habe gestern schon wieder einen erwischt, wie er ein Programm zweimal startete ohne es zu merken (trotz Taskleiste).

Zitat:

Wieso denn? Willst du etwa ernsthaft die Verbindung zur DB im Programm fest codieren :hair:


Nein, natürlich nicht. Aber wo ist das hier : frmoption

Gruß
Hansa
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Fr 27.09.02 14:25 
Hi
Zitat:

Aber wo ist das hier : frmoption

Das ist der Name meines Formulars für die Optionen

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 27.09.02 14:46 
:shock: -> :oops:

Das alles kommt bei mir zu allerletzt. Merke, daß ich zu lange an einem Stück dran bin.

Gruß
Hansa
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Fr 27.09.02 15:41 
Du kannst doch Deine Aliase oder Deinem Treiber sagen, wo er die Datenbanken finden kann. Hast Du schon mal in die Systemsteuerung geschaut unter Datenquellen ODBC ? Schaue da mal nach ob dort Deine Datenbank eingetragen ist mit dem Laufwerksbuchstaben E.
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 27.09.02 20:03 
Hi bis11,

lese schon, was Ihr hier schreibt, aber mache mir auch meine Gedanken darüber. :P

Zitat LCS :

Zitat:

Warum also diese Alias-Geschichte überhaupt?


Tja, und nu?

Gruß
Hansa
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Sa 28.09.02 10:55 
bis11 hat folgendes geschrieben:
Hast Du schon mal in die Systemsteuerung geschaut unter Datenquellen ODBC ?


Das habe ich in meinem letzten Posting geschrieben, dabei ist es völlig egal ob Du Alias benutzt oder nicht.