Avatar billede rkb Nybegynder
05. juli 2001 - 14:01 Der er 19 kommentarer og
2 løsninger

Webbrowser og TAdoDataset

Er der nogle der har en logisk forklaring på hvorfor ADODataset fejler med \"Wrong type or argument...\" fejl, efter jeg har brugt en TWebBrowser til at printe med ( WebBrowser1.ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_DONTPROMPTUSER); ) ?

/René
Avatar billede martinlind Nybegynder
05. juli 2001 - 14:14 #1
Har du prøvet at Checke \"CommandType\" på dataset\'et før og efter print
       
Avatar billede rkb Nybegynder
05. juli 2001 - 14:24 #2
Det var ikke det ser det ud til, - :-(

CommandType er cmdText.. både før og efter, og jeg har prøvet nu at sætte det specifikt, det har ikke nogle effekt :(
Avatar billede rkb Nybegynder
05. juli 2001 - 14:26 #3
  SQL := \'Select ID, TEST From Tabel Where ID = \' + IntToStr(GetID);

  DataSet := TADODataSet.Create(nil);
  DataSet.ConnectionString := GetConnectionString;

  DataSet.CommandType := cmdText;
  DataSet.CommandText := SQL;
  DataSet.CursorType := ctDynamic;
  DataSet.LockType := ltOptimistic;
  DataSet.Open;
  DataSet.Edit;


Sådan her ser min kode ud, og i DataSet.Open failer den altså efter jeg har haft finger i den der ExecWB på webbrowseren :(
Avatar billede martinlind Nybegynder
05. juli 2001 - 14:27 #4
Du må ind og slå \"Use Debug DCU\" til og så sætte et breakpoint inden du printer, og se hvad helvede den laver :)
Avatar billede rkb Nybegynder
05. juli 2001 - 14:38 #5
Det hjælper mig ikke sådan lige, :( der sker lidt for meget til at jeg kan overskue det, :(
Avatar billede martinlind Nybegynder
05. juli 2001 - 14:50 #6
Hvad så med at kigge på din CallStack når den går ned, så kan du måske se hvad den har været igen med, også finde en løsning, den er der helt sikkert på en eller anden måde :)
Avatar billede rkb Nybegynder
05. juli 2001 - 15:04 #7
Det må være en logisk forklaring som en eller anden kender, uden at jeg skal ind og pille ved source kode som borland har lavet.
Avatar billede martinlind Nybegynder
05. juli 2001 - 15:19 #8
Jeg siger ikke at du nødvendigvis skal pille ved source koden, men der kunne være en bug, det kunne måske også gi\' dig en ide om hvordan du laver en \"work around\". Jeg har ikke brugt ADO så jeg har ikke løsningen, kun \"løsnings metoder\", hvad jeg har hørt, løber man nemlig hurtigt ind i de sædvanlige MS versions problemer, så jeg er meget glad for IinterBase 6 OpenSource også fordi den er skide godt integreret med delphi
Avatar billede rkb Nybegynder
05. juli 2001 - 15:21 #9
Jeg sætter min lid til en anden kan svare så...
Avatar billede martinlind Nybegynder
05. juli 2001 - 15:27 #10
Held og lykke :)

Hvis du ikke bruger nogle \"non standart\" comp. er du velkommen til at maile din kode ( uden exe fil ) til mig, så skal jeg se hvad jeg kan finde ud af.

/Martin
martin@e-lind.dk
Avatar billede rkb Nybegynder
05. juli 2001 - 15:33 #11
Jeg kan desværre ikke sende dig noget kode fordi dette er en produkt, som jeg arbejder på for et større virksomhed.

Men efterprøvelsen er simpel nok, sæt en webbrowser ind, og hent en side ind i den, og print den ud med ExecWB, og forsøg at hente noget ud af en database ( i mit tilfælde MS SQL Server 2000 ) med de samme parameter som jeg postede tidligere.
Avatar billede martinlind Nybegynder
05. juli 2001 - 15:46 #12
Jeg kan ikke køre den ExecWB, classID not found eller noget iden still desværre
Avatar billede rkb Nybegynder
05. juli 2001 - 15:50 #13
du skal køre den i ondocumentcomplete, efter du har lovedet en side?
Avatar billede martinlind Nybegynder
05. juli 2001 - 15:51 #14
Ja, det fandt jeg også lige udaf *S*, men jeg er på vej hjem, så jeg vender lige tilbage om nogle timer.
Avatar billede martinlind Nybegynder
05. juli 2001 - 18:08 #15
hvad gør du med GetConnectionString; ??

 
Avatar billede rkb Nybegynder
05. juli 2001 - 22:01 #16
Get Connection string er en funktion til at hente en streng som angiver connection strengen , dvs. hvilken server, adresse password brugerid, osv. samt hvilken databasedrivere der skal bruges...
Avatar billede martinlind Nybegynder
06. juli 2001 - 09:42 #17
Har du et eks. det så lidt forvirende ud, når man ikke har brugt det før
Avatar billede rkb Nybegynder
06. juli 2001 - 09:47 #18
  Function GetConnectionString: String;
  Begin
    Result := \'Provider=<Drivernavn>(SQLOLEDB.1);Password=<password>;Persist Security Info=True;User ID=<userid>;\';
    Result := Result + \'Initial Catalog=<databasenavn>;Data Source=<databaseserver>;\';
    Result := Result + \'Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;\';
    Result := Result + \'Workstation ID=SOMETHING;Use Encryption for Data=False;Network Library=DBMSSOCN;\';
    Result := Result + \'Locale Identifier=1030;Tag with column collation when possible=False\';
  End;


her er min funktion til get connection string, jeg har selvfølgelig været nødt til at fjerne ting som kunne give folk adgang til vores server med denne, men det er da et eksempel, men det er godtnok til en SQL Server - jeg vil tro du kan lave et TAdoConnection object, og hvis du laver det visuelt kan du bruge en wizard til at lave connection strengen
Avatar billede rkb Nybegynder
06. juli 2001 - 09:49 #19
Jeg fandt iøvrigt et par posts på nogle newsgroups fra folk der havde samme problem, dog var der kun én af dem der gav udtryk for at have fundet løsningen, uden egenligt at beskrive denne, - men han skriver dog noget med QueryInterface for IOleCommandTarget, jeg ved ikke om det siger dig noget, jeg er ikke så stiv i det... :-(

http://groups.google.com/groups?hl=en&safe=off&ic=1&th=957d48011eab079a,2&seekm=3b199644_1%40dnews#p
Avatar billede rkb Nybegynder
06. juli 2001 - 10:21 #20
procedure TTVEditor.PrintIE;
var
  CmdTarget : IOleCommandTarget;
  vaIn, vaOut: OleVariant;
begin
  if WebBrowser1.Document <> nil then
    try
      WebBrowser1.Document.QueryInterface(IOleCommandTarget, CmdTarget);
      if CmdTarget <> nil then
        try
          CmdTarget.Exec( PGuid(nil), OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);
        finally
          CmdTarget._Release;
        end;
    except
      // Nothing
    end;
end;


her er løsningen - helt at droppe at bruge ExecWB ... Martin jeg takker dig for din hjælp dog du ikke fandt løsningen var det dog rart med lidt sparing for at finde den :-)
Avatar billede martinlind Nybegynder
06. juli 2001 - 10:28 #21
Interessant, jeg takker for point\'ne, forstat god arb. lyst
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
Kategori
Kurser inden for grundlæggende programmering

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