Autor |
Beitrag |
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: 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.
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 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 27.09.02 08:22
Hi,
man soll nicht zu schnell alles abschicken.  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
      
Beiträge: 1247
Erhaltene Danke: 2
Apple Mac OSX 10.11
|
Verfasst: 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 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: 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
      
Beiträge: 1247
Erhaltene Danke: 2
Apple Mac OSX 10.11
|
Verfasst: 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 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: 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
      
Beiträge: 1247
Erhaltene Danke: 2
Apple Mac OSX 10.11
|
Verfasst: 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 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: 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?  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 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 27.09.02 10:21
Hi bis11,
Delphi - Task mußte ich tatsächlich abbrechen !
also gut, wenn schon dann alles:
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
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Fr 27.09.02 10:25
Hi
das Problem kommt mir irgendwie bekannt vor.  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 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: 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
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: 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 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 27.09.02 11:19
Hi Lothar,
Du meinst also : Besser alles funktioniert und keiner weiß warum ?  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.
Bis dann
Hansa
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Fr 27.09.02 12:46
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: 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.  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
|
Nein, natürlich nicht. Aber wo ist das hier : frmoption
Gruß
Hansa
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: 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 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 27.09.02 14:46
 ->
Das alles kommt bei mir zu allerletzt. Merke, daß ich zu lange an einem Stück dran bin.
Gruß
Hansa
|
|
bis11
      
Beiträge: 1247
Erhaltene Danke: 2
Apple Mac OSX 10.11
|
Verfasst: 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 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 27.09.02 20:03
Hi bis11,
lese schon, was Ihr hier schreibt, aber mache mir auch meine Gedanken darüber.
Zitat LCS :
Zitat: |
Warum also diese Alias-Geschichte überhaupt?
|
Tja, und nu?
Gruß
Hansa
|
|
bis11
      
Beiträge: 1247
Erhaltene Danke: 2
Apple Mac OSX 10.11
|
Verfasst: 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.
|
|