Consultor Eletrônico



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.