Avatar billede kustoden Nybegynder
21. juli 2003 - 22:22 Der er 4 kommentarer og
1 løsning

TIBDatabase ifm. ISAPI

Jeg har lavet en ASAPI-extension og vil gerne have den til at køre mod en IB 6.0 database

Hvis jeg kører nedenstående kode fra en exe-fil (i en Button1Click-proc), er der ingen problemer og jeg har også prøvet at lave et dll, der eksporterer en funktion, der i indhold er identisk med nedenstående kode og kalde den fra en exe-fil.
Begge dele fungerer fint.

Men når jeg bruger den samme kode i et TWebmodule, får jeg en exception : EIBInterBaseError -- unavailable database

Den exception kommer allerede ved DB.Open();

Balladen opstår både i Delphi 5 og 6.

Så er det, at jeg ikke forstår en meter.

Er der nogen, der kender en løsning på problemet, eller kan gennemskue, om jeg har gjort noget glat?


---------------------------------------------------------
procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);

var
  LangID : String;
  Q      : TIBQuery;
  CurRec : PDataRec;
  T      : TIBTransaction;
  DB    : TIBDatabase;
begin

  try try
  CritSec.Enter;

  LangID := Request.QueryFields[0];

  if not StringUtil.IsInteger(LangID) then
    raise EVSF.Create('LangID is not integer');

  T  := TIBTransAction.Create(nil);
  DB := TIBDatabase.Create(nil);
  DB.DefaultTransaction := T;
    DB.DatabaseName := 'D:\Udvikling\Website\DB\Local\Vsf.gdb';
  DB.Params.Add('user_name=sysdba');
  DB.Params.Add('password=masterkey');
  DB.LoginPrompt := False;
  Debug.AddToLog('Opening DB');
  DB.Open();
  Debug.AddToLog('DB opened');
 
  Q := TIBQuery.Create(nil);
  Q.Database := DB;
  Q.Transaction := T;
  Q.Close();

  Q.SQL.Clear();
  Q.SQL.Add('SELECT * FROM VW_Text WHERE LangID = ' + LangID);
  Debug.AddToLog('Opening Q');
  Q.Open();
Avatar billede stoney Nybegynder
22. juli 2003 - 00:06 #1
Prøv at rette til nedenstående

DB.DatabaseName := 'localhost:D:/Udvikling/Website/DB/Local/sf.gdb';

Stoney
Avatar billede kustoden Nybegynder
22. juli 2003 - 11:31 #2
Har prøvet det Stoney. Det virker ikke. :-(

Problemet er, at det virker, hvis jeg bruger koden i en exe-ting og også hvis jeg bruger den i et dll, der bliver loaded af min egen exe-ting, men ikke hvis det ligger i et TWebModule i et dll, det bliver kaldt af IIS.
Avatar billede stoney Nybegynder
22. juli 2003 - 11:51 #3
Det skal virke.

Prøv at ændre / til \.

Under alle omstændigheder skal du have localhost:  prefix'en med,
forud-sat din DB ligger på den lokale maskine.

Stoney
Avatar billede kustoden Nybegynder
22. juli 2003 - 12:10 #4
Det hjalp.

Nu får jeg godt nok en anden fejl :
EIBClientError -- Cannot create shared resource. (Windows error 5)

Men det problem, jeg havde, må siges at være løst, og det andet er nok et problem, der er til at løse. (ved f.eks. at lave een TIBDatabase som en  Threadvar e.l.

Tak for hjælpen.
Stoney kan du ikke lige lave et svar, så du kan få dine point.
Avatar billede stoney Nybegynder
22. juli 2003 - 12:33 #5
Prøv lige at checke NTFS permission på din GDB.

Altså IUSER_XXX skal have rettigheder til den.

Stoney
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester