Avatar billede janbb Juniormester
19. august 2003 - 19:20 Der er 8 kommentarer og
1 løsning

skriv memo til server -ADOtable - webbroker

Kan tænke mig det er svært, men kunne ønske at mit hjemmelavede lille program kunne vise en memo i et Webbroker- konstrueret udskrift. (programmet er desværre blevet noget rod, men jeg håber I kan abstrahere fra alle de komponenter, der er kommet med som jeg ikke bruger, men ikke har 'turdet' slette (for ikke at gøre noget forkert)).
Programmet listes i næste kommentar.

ADOQuery3NOTE: TMemoField;

er altsaa den parameter jeg ville ønske ku gøres synlig.
Avatar billede janbb Juniormester
19. august 2003 - 19:27 #1
program adolink2;

{$APPTYPE CONSOLE}

uses
  WebBroker,
  CGIApp,
  adolink2unit in 'adolink2unit.pas' {WebModule1: TWebModule};

{$R *.RES}

begin
  Application.Initialize;
  Application.CreateForm(TWebModule1, WebModule1);
  Application.Run;
end.




unit adolink2unit;

interface

uses
  Windows, Messages, SysUtils, Classes, HTTPApp, Db, DBTables, ADODB;

type
  TWebModule1 = class(TWebModule)
    Database1: TDatabase;
    Table1: TTable;
    Query1: TQuery;
    DataSource1: TDataSource;
    Table1Sogeord: TStringField;
    Table1Gruppe: TStringField;
    Table1Tilhorer: TStringField;
    Table1Dato: TStringField;
    Table1Genvej: TMemoField;
    Query1Gruppe: TStringField;
    Query2: TQuery;
    Query2info: TStringField;
    ADOConnection1: TADOConnection;
    ADOCommand1: TADOCommand;
    ADODataSet1: TADODataSet;
    ADOTable1: TADOTable;
    ADOQuery1: TADOQuery;
    ADOQuery1ID: TAutoIncField;
    ADOQuery1Name: TWideStringField;
    ADOQuery1Age: TIntegerField;
    ADOQuery1Phone: TIntegerField;
    ADOQuery1EMail: TWideStringField;
    ADOTable1ID: TAutoIncField;
    ADOTable1Name: TWideStringField;
    ADOTable1Age: TIntegerField;
    ADOTable1Phone: TIntegerField;
    ADOTable1EMail: TWideStringField;
    ADOQuery2: TADOQuery;
    DataSource2: TDataSource;
    ADOTable2: TADOTable;
    ADOQuery3: TADOQuery;
    ADOTable2PtNr: TAutoIncField;
    ADOTable2Navn: TWideStringField;
    ADOTable2CPR: TWideStringField;
    ADOTable2ANL_DATO: TWideStringField;
    ADOTable2AF_AFD: TWideStringField;
    ADOTable2INIT: TWideStringField;
    ADOTable2PLACERING: TWideStringField;
    ADOTable2SU_JU_FEM: TWideStringField;
    ADOTable2L_NGDE: TWideStringField;
    ADOTable2SEP_DATO: TWideStringField;
    ADOTable2SKIFT_G_WI: TWideStringField;
    ADOTable2A_XRSAG_TIL: TWideStringField;
    ADOTable2B_XRSAG_TIL: TWideStringField;
    ADOTable2C_XRSAG_TIL: TWideStringField;
    ADOTable2BAKT_FUND: TWideStringField;
    ADOTable2A_KATHBEN: TWideStringField;
    ADOTable2B_KATHBEN: TWideStringField;
    ADOTable2C_KATHBEN: TWideStringField;
    ADOTable2EXT_INT: TWideStringField;
    ADOTable2ANTIBIO: TWideStringField;
    ADOTable2NOTE: TMemoField;
    ADOQuery3PtNr: TAutoIncField;
    ADOQuery3Navn: TWideStringField;
    ADOQuery3CPR: TWideStringField;
    ADOQuery3ANL_DATO: TWideStringField;
    ADOQuery3AF_AFD: TWideStringField;
    ADOQuery3INIT: TWideStringField;
    ADOQuery3PLACERING: TWideStringField;
    ADOQuery3SU_JU_FEM: TWideStringField;
    ADOQuery3L_NGDE: TWideStringField;
    ADOQuery3SEP_DATO: TWideStringField;
    ADOQuery3SKIFT_G_WI: TWideStringField;
    ADOQuery3A_XRSAG_TIL: TWideStringField;
    ADOQuery3B_XRSAG_TIL: TWideStringField;
    ADOQuery3C_XRSAG_TIL: TWideStringField;
    ADOQuery3BAKT_FUND: TWideStringField;
    ADOQuery3A_KATHBEN: TWideStringField;
    ADOQuery3B_KATHBEN: TWideStringField;
    ADOQuery3C_KATHBEN: TWideStringField;
    ADOQuery3EXT_INT: TWideStringField;
    ADOQuery3ANTIBIO: TWideStringField;
    ADOQuery3NOTE: TMemoField;
    procedure WebModule1WebActionItem1Action(Sender: TObject;
      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  WebModule1: TWebModule1;

implementation

{$R *.DFM}

procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
    sl:tstringlist;
  t:integer;
begin

    sl:=TStringList.Create;
  try

    Response.ContentType:='text/html';
    sl.add('<html><head></head><body><BODY bgcolor="#000080" text="#ffffff" link="#FF00FF" vlink="#FFCC66" alink="#FF0000"><CENTER>');

      sl.add('<form name=login action=../misc.asp method=get>');
    sl.add('<input type=submit name="SHOW_TABLE_NEXT" value="---->">');
    adoTable2.Open;

    sl.add('<p><table border="0">');
        sl.add('<tr>');
    for t:=0 to adoquery3.Fields.Count -1 do
    begin

    end;

        While not adoquery3.Eof do
    begin

            sl.add('<tr>');
      for t:=0 to adoquery3.Fields.Count -1 do
      begin
          if adoquery3.fields[t].IsNull
        then
            sl.add( format('<td>%s</td>',['<font color="silver" size="-2"><null></font>']) )
        else

        sl.add( format('<td>%s</td>',[adoquery3.fields[t].Displaytext]) );
        //sl.add( format('<td>%s</td>',[query2.fields[t].Displaytext]) );

      end;
            sl.add('<tr>');
    // adoquery1.Next;
      adoquery3.Next;
    end;

    sl.add('</table>');
    sl.Add('</body></html>');
    response.content:=sl.Text;
    finally
      sl.Free;
  end;
  end;
  end.
Avatar billede janbb Juniormester
19. august 2003 - 19:33 #2
Aktuelt bliver det altsaa forståes bare udskevet med "MEMO" lissom i en DbGrid.
Og det *svære* muligvis - spm er om memoen kan skrives ud evt i en række ved siden af hvis det er lettere.
Avatar billede janbb Juniormester
19. august 2003 - 21:37 #3
Det ville osse være ok hvis man ku få memoen vist ved at klikke på feltet.Har ihvert fald set det gjort i et ASP program - og det kan man jo godt programmere ind hvis man var mere klog på ASP.
Avatar billede janbb Juniormester
19. august 2003 - 21:41 #4
Og iøvrigt bruger 'han' (et program jeg har fundet på 'activeserverpages' for nogle aar siden recordset;
Avatar billede janbb Juniormester
19. august 2003 - 21:42 #5
ASP:programmet: saa -..
<%
on error resume next
'Variables assigned on start of document
'all leading and trailing blanks are removed
'and any single quotes are changed to &#39;
u_action=request.querystring("u_action")
u_title=replace(trim(request.form("u_title")),"'","&#39;")
u_body=replace(trim(request.form("u_body")),"'","&#39;")
u_author=replace(trim(request.form("u_author")),"'","&#39;")
u_log=request.querystring("u_log")
script_name=request.servervariables("script_name")
%>


<%
'Check to see if the user is adding an article
'if so, then display the input form
if u_action <> "add" then

'if the user is not looking for the input field
'then they will be interacting with the db
'in one of three ways.
'1. to insert a new article
'2. to view a specific observation
'3. to display recent headlines
'The following select statement will adjust the
'sql according to which action is requested

select case u_action
case "insert"

sql = "insert into articles (title,body,author)"
sql = sql & " values( '" & u_title & "' , '" & u_body & "' , '" & u_author & "' )"

case "display"
sql="select * from articles where log = "&u_log


case else
sql="select * from articles order by date desc "
end select

accessdb="articles"
cn="driver={Microsoft Access Driver (*.mdb)};"
cn=cn & "dbq=" & server.mappath(accessdb)
Set rs = Server.CreateObject("ADODB.Recordset")

rs.Open sql, cn
'if there are no observations found then
'redirect the user to the default view
'exceot if the user is adding an article
if u_action <> "insert" then
if rs.eof then
response.redirect script_name
end if
end if
'Start html output
%>
<html>
<title>Recent Articles</title>
<meta name="Microsoft Border" content="t, default">
<body><!--msnavigation--><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td>
<p>&nbsp;</p>
</td></tr><!--msnavigation--></table><!--msnavigation--><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><!--msnavigation--><td valign="top">

<% 'Display successful addition of article to db
if u_action="insert" then %>
Your Article was added.<br>
<% else
'Display db output  %>
<% do while not rs.eof and counter < 6
' Change 6 to any number of Titles you want to display
counter=counter+1 %>
<% if u_action <> "display" then %>
<a href="<%= script_name %>?u_action=display&u_log=<%= rs("log")%>"><%= rs("title") %></a> <%= rs("date") %><br>
<% else %>
<b><%= rs("title") %></b><br>
by <%= rs("author") %>
<p>
<pre>
<%= rs("body") %>
</pre>
<% end if %>
<%
rs.movenext
loop %>
<% end if
end if
%>

<% if u_action="add" then
'if the user is adding a new article
'then display the form input fields  %>
<script Language="JavaScript">
<!--
function Blank_TextField_Validator(form)
{


if (form.u_title.value == "")
{
alert("Please fill in the title field.");
form.u_title.focus();
return (false);
}


if (form.u_body.value == "")
{
alert("Please fill in the body field.");
form.u_body.focus();
return (false);
}


if (form.u_author.value == "")
{
alert("Please fill in the author field.");
form.u_author.focus();
return (false);
}


return (true);
}

//-->
</script>
<form method="post" action="<%= script_name %>?u_action=insert"  onsubmit="return Blank_TextField_Validator(this)">
Title<br>
<input type="text" name="u_title" size="65"><p>
Body<br>
<textarea rows="8" name="u_body" cols="65"></textarea><p>
Author<br>
<input type="text" name="u_author" size="65"><p>

<input type="submit" value="Submit">
</form>
<% else
'if the user is doind anything other than adding an article
'display navigational hyperlinks %>
<p><a href="<%= script_name %>">View Recent Articles</a><br>
<a href="<%= script_name %>?u_action=add">Add Your Article</a>
<% end if %>
Avatar billede janbb Juniormester
19. august 2003 - 22:19 #6
Ja her er en udgave, hvor der er ryddet op i komponentrodet:

unit adolink3unit;

interface

uses
  Windows, Messages, SysUtils, Classes, HTTPApp, Db, DBTables, ADODB;

type
  TWebModule1 = class(TWebModule)
    ADOConnection1: TADOConnection;
    DataSource2: TDataSource;
    ADOTable2: TADOTable;
    ADOQuery3: TADOQuery;
    ADOTable2PtNr: TAutoIncField;
    ADOTable2Navn: TWideStringField;
    ADOTable2CPR: TWideStringField;
    ADOTable2ANL_DATO: TWideStringField;
    ADOTable2AF_AFD: TWideStringField;
    ADOTable2INIT: TWideStringField;
    ADOTable2PLACERING: TWideStringField;
    ADOTable2SU_JU_FEM: TWideStringField;
    ADOTable2L_NGDE: TWideStringField;
    ADOTable2SEP_DATO: TWideStringField;
    ADOTable2SKIFT_G_WI: TWideStringField;
    ADOTable2A_XRSAG_TIL: TWideStringField;
    ADOTable2B_XRSAG_TIL: TWideStringField;
    ADOTable2C_XRSAG_TIL: TWideStringField;
    ADOTable2BAKT_FUND: TWideStringField;
    ADOTable2A_KATHBEN: TWideStringField;
    ADOTable2B_KATHBEN: TWideStringField;
    ADOTable2C_KATHBEN: TWideStringField;
    ADOTable2EXT_INT: TWideStringField;
    ADOTable2ANTIBIO: TWideStringField;
    ADOTable2NOTE: TMemoField;
    ADOQuery3PtNr: TAutoIncField;
    ADOQuery3Navn: TWideStringField;
    ADOQuery3CPR: TWideStringField;
    ADOQuery3ANL_DATO: TWideStringField;
    ADOQuery3AF_AFD: TWideStringField;
    ADOQuery3INIT: TWideStringField;
    ADOQuery3PLACERING: TWideStringField;
    ADOQuery3SU_JU_FEM: TWideStringField;
    ADOQuery3L_NGDE: TWideStringField;
    ADOQuery3SEP_DATO: TWideStringField;
    ADOQuery3SKIFT_G_WI: TWideStringField;
    ADOQuery3A_XRSAG_TIL: TWideStringField;
    ADOQuery3B_XRSAG_TIL: TWideStringField;
    ADOQuery3C_XRSAG_TIL: TWideStringField;
    ADOQuery3BAKT_FUND: TWideStringField;
    ADOQuery3A_KATHBEN: TWideStringField;
    ADOQuery3B_KATHBEN: TWideStringField;
    ADOQuery3C_KATHBEN: TWideStringField;
    ADOQuery3EXT_INT: TWideStringField;
    ADOQuery3ANTIBIO: TWideStringField;
    ADOQuery3NOTE: TMemoField;
    procedure WebModule1WebActionItem1Action(Sender: TObject;
      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  WebModule1: TWebModule1;

implementation

{$R *.DFM}

procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
    sl:tstringlist;
  t:integer;
begin

    sl:=TStringList.Create;
  try

    Response.ContentType:='text/html';
    sl.add('<html><head></head><body><BODY bgcolor="#000080" text="#ffffff" link="#FF00FF" vlink="#FFCC66" alink="#FF0000"><CENTER>');

      sl.add('<form name=login action=../misc.asp method=get>');
    sl.add('<input type=submit name="SHOW_TABLE_NEXT" value="---->">');
    adoTable2.Open;

    sl.add('<p><table border="0">');
        sl.add('<tr>');
    for t:=0 to adoquery3.Fields.Count -1 do
    begin

    end;

        While not adoquery3.Eof do
    begin

            sl.add('<tr>');
      for t:=0 to adoquery3.Fields.Count -1 do
      begin
          if adoquery3.fields[t].IsNull
        then
            sl.add( format('<td>%s</td>',['<font color="silver" size="-2"><null></font>']) )
        else

        sl.add( format('<td>%s</td>',[adoquery3.fields[t].Displaytext]) );
        //sl.add( format('<td>%s</td>',[query2.fields[t].Displaytext]) );

      end;
            sl.add('<tr>');
    // adoquery1.Next;
      adoquery3.Next;
    end;

    sl.add('</table>');
    sl.Add('</body></html>');
    response.content:=sl.Text;
    finally
      sl.Free;
  end;
  end;
  end.
Avatar billede stoney Nybegynder
19. august 2003 - 22:37 #7
Prøv at checke www.matlus.com
Han er next to GOD når vi snakker Delphi/WEB.
Kører du CGI eller ISAPI (dit 2. indlæg tyder på CGI)?
Prøv at checke Micro$oft's becnhmark test (ASP go home).
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnile/html/docu2kbench.asp
Nu er du jo heldig at du bruger Delphi, i VB kan du ikke
lave ISAPI DLL'er.

Stoney
Avatar billede janbb Juniormester
20. august 2003 - 01:55 #8
Stoney: Jeg har flere gange været inde på matlus.com og det er vældig interessandt, men lidt en jungle når man ikke  har alle grundbegreberne helt på plads - for at sige det mildt.
Hvad er fordelen ved at bruge ISAPI DLL'er ? Jeg valgte det egtl. fra primært fordi det lod til at de lissom blev hængende i hukommelsen, men jeg opdagede lige (i går tror jeg det var) at man i websted for IIS kan slå "cashe" for ISAPI fra - og så har jeg egtl ikke prøvet at se om det går bedre, men jeg synes jeg kan huske at det må være mere kompliceret end som så.
Jeg tror at det med den MEMO er lidt for ambitiøst, men jeg har været overrasket før over nogen ting der lod sig løse på mystisk vis.
Ja, jeg bruger EXE-filer (CGI) og jeg er langt fra at kunne bruge UPDATE og den slags ting, men jeg kigger da på den en gang imellem.
Avatar billede janbb Juniormester
20. august 2003 - 19:14 #9
jeg tror jeg gemmer mit spm til tiden er moden
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