Kbase 34980: 1012 ** Warning -- database is already connected. (1012)
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  15/08/2000 |
|
Solution ID: P4980
SYMPTOM(s):
1012 ** Warning -- database <name> is already connected. (1012)
<program name> Database <dbname> not connected. (1006)
CAUSE:
Running code similar to:
DEFINE VARIABLE cDatabases AS CHARACTER NO-UNDO.
DEFINE VARIABLE cDBPATH AS CHARACTER NO-UNDO.
DEFINE VARIABLE cOUTFILE AS CHARACTER NO-UNDO.
DEFINE VARIABLE iDBCounter AS INTEGER NO-UNDO.
ASSIGN cDatabases = "sports1,sports2,sports3,sports4,sports5"
iDBCounter = 1.
DO iDBCounter = 1 TO NUM-ENTRIES(cDatabases):
ASSIGN cDBPATH = "d:\wrk8.3b\" + ENTRY(iDBCounter, cDatabases, ",")
cOUTFILE = "d:\wrk8.3b\" + ENTRY(iDBCounter, cDatabases, ",") + ".df".
CONNECT VALUE(cDBPATH).
RUN prodict/dump_df.p ("ALL",cOUTFILE,"").
DISCONNECT VALUE(LDBNAME(1)).
END.
QUIT.
first time generates: <program name> Database <dbname> not connected. (1006)
second time generates: ** Warning -- database <name> is already connected. (1012)
The first error is because prodict/dump_df.p some how tries to access the first database logical name after the disconnect statement.
The second error is because the first aborted run kept the previously connected database connected.
Both errors are caused by the DISCONNECT not taking effect till the end of the loop. Therefore executing the DISCONNECT after the loop resolves this issue.
FIX:
Delay disconnecting the databases till after the loop as per the following:
DEFINE VARIABLE cDatabases AS CHARACTER NO-UNDO.
DEFINE VARIABLE cDBPATH AS CHARACTER NO-UNDO.
DEFINE VARIABLE cOUTFILE AS CHARACTER NO-UNDO.
DEFINE VARIABLE iDBCounter AS INTEGER NO-UNDO.
ASSIGN cDatabases = "sports1,sports2,sports3,sports4,sports5"
iDBCounter = 1.
DO iDBCounter = 1 TO NUM-ENTRIES(cDatabases):
ASSIGN cDBPATH = "d:\wrk8.3b\" + ENTRY(iDBCounter, cDatabases, ",")
cOUTFILE = "d:\wrk8.3b\" + ENTRY(iDBCounter, cDatabases, ",") + ".df".
CONNECT VALUE(cDBPATH).
RUN prodict/dump_df.p ("ALL",cOUTFILE,"").
END.
DO WHILE LDBNAME(1) NE ?:
DISCONNECT VALUE(LDBNAME(1)).
END.
QUIT.