Avatar billede koden12 Nybegynder
27. august 2003 - 16:24 Der er 13 kommentarer og
1 løsning

DBGrid med en DBMemo

Jeg har fundet noget kode der skal kunne gøre så jeg kan se og skrive i en DBMemo i en DBGrid.
Den kan godt nok rydde den og jeg kan også få en mus til at stå derinde men jeg kan ikke skrive noget ?
Hvorfor ? Ikke ?
Her er koden noget af det er på test så det er udkommateret men ingen af dem virker helt ?

procedure TForm1.Table1BilagtekstGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin

Table1.FieldByName('Bilagtekst').AsString

//If DisplayText Then
//  Begin
//  Text:=(Sender as TBlobField).Value;
// End;
end;

VH
SprøgerJørgen
Avatar billede janbb Juniormester
27. august 2003 - 19:18 #1
Det er et meget spændende spm. - er det relateret til nogen nye funktioner i nyere versioner af Delphi ?.
Avatar billede janbb Juniormester
27. august 2003 - 19:26 #2
(se og skrive - er 2 meget forskellige ting: 'se' er mulig via sql og derfor mere opnåelig - 'skrive' kræver mer 'grundig' 'ur'-programmering: post, put og get, der er helt tilbage fra da DOS var det ' sidste nye ').
Avatar billede koden12 Nybegynder
27. august 2003 - 19:36 #3
Næ det er vist til alle delphi tror jeg nok.
Men hvorfor virker denne ikke ?
Table1.FieldByName('Bilagtekst').AsString
Er der en der hedder puttekst ?
Kan man slet ikke se et DBMemo i en DBGrid ?
VH
SpøgerJørgen
Avatar billede janbb Juniormester
27. august 2003 - 19:37 #4
Hvis du har IIS i din windows-vers. og du downloader freeware-vers. fra http://cgiexperten.com og du bruger httpfilter-componenten i et datamodul -

kan du med et program af nedenstående karakter få memo i en DbGrid, (de har osse eksempler med opdaterinsfunktioner, men det er i høj grad komplicerede ting).
program cgiwebProject1;

uses
  Forms,
  cgiwebUnit2 in 'cgiwebUnit2.pas' {DataModule2: TDataModule};

{$R *.RES}

begin
  Application.Initialize;
  Application.CreateForm(TDataModule2, DataModule2);
  Application.Run;
end.
unit cgiwebUnit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, DBTables, HUtils, HttpEng, HDBUtils, GenEng;




type
  TDataModule2 = class(TDataModule)
    GeneralHttpEngine1: TGeneralHttpEngine;
    HttpDBGrid1: THttpDBGrid;
    HttpFileFilter1: THttpFileFilter;
    Query1: TQuery;
    Query1Genvej: TMemoField;
    Query1Gruppe: TStringField;
    procedure HttpFileFilter1HttpEntry(EntryName: String;
      var Handled: Boolean);
    procedure GeneralHttpEngine1ExecRequest(Sender: TObject);
    procedure HttpFileFilter1HttpLogicalEntry(EntryName: String;
      var Value: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DataModule2: TDataModule2;

implementation

{$R *.DFM}

procedure TDataModule2.GeneralHttpEngine1ExecRequest(Sender: TObject);
begin
  try
    HttpFileFilter1.Put;
    httpdbgrid1.Put;
  except
    On E : Exception do
    begin
      PutLine('<HTML><HEAD><TITLE>TheFile</TITLE></HEAD><BODY>');
      PutLine('To run this example you have to put the file "File.htm" into your script directory !');
      PutLine('Exception : ' + E.Message);
      PutLine('</BODY></HTML>');
    end;
  end;
end;

procedure TDataModule2.HttpFileFilter1HttpEntry(EntryName: String;
  var Handled: Boolean);
begin
{Convert to upper case}
  EntryName:=AnsiUpperCase(EntryName);

  {Check which entry and}
  if EntryName='DATE' then
    Put(DateToStr(Now))
  else if EntryName='TEXT' then
  begin


  end
  else
  begin
    //By setting handled to true you will automatically set the value to any corrsponding
    // Form variable, server variable, TIME, DATE or RANDOM_HIDDEN_INPUT
    Handled:=False;
  end;

end;

procedure TDataModule2.HttpFileFilter1HttpLogicalEntry(EntryName: String;
  var Value: Boolean);
var
  H,M,S,MS : Word;
begin
  EntryName:=AnsiUppercase(EntryName);
  DecodeTime(Now,H,M,S,MS);
  if EntryName='MORNING' then
    Value:=(H>=4) and (H<12)
  else if EntryName='AFTERNOON' then
    Value:=(H>=12) and (H<19)
  else if EntryName='EVENING' then
    Value:=(H>=19) or (H<4)
  else if EntryName='LATE' then
    Value:=(H>=23) or (H<4);
end;
end.
unit FileD2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  HUtils, HttpEng, GenEng, Db, DBTables, HDBUtils;

type
  TDataModule1 = class(TDataModule)
    GeneralHttpEngine1: TGeneralHttpEngine;
    HttpFileFilter1: THttpFileFilter;
    HttpDBGrid1: THttpDBGrid;
    Query1: TQuery;
    Query1Tilhorer: TStringField;
    Query1Dato: TStringField;
    Query1Genvej: TMemoField;

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DataModule1: TDataModule1;

implementation

{$R *.DFM}



end.
Avatar billede janbb Juniormester
27. august 2003 - 19:44 #5
Du skal osse ha en generelhttpengine, en httpdbgrid og en query.(i datamodulet)
Der er ingen 'udløbsdato' på freeware-vers., hvorimod shareware-vers.
er med 'nag' efter 14 dage.
Avatar billede janbb Juniormester
27. august 2003 - 19:46 #6
Det efter end. er kommet med ved en fejl.(se bort fra det.
Avatar billede janbb Juniormester
27. august 2003 - 19:48 #7
Det er en webbroker-ting, så du kan kun bruge den hvis du har en version med webbroker.
Avatar billede janbb Juniormester
27. august 2003 - 19:57 #8
Filterfunktionen giver dig mulighed for via File.htm i dit hjemmeside-bibl. at indflette noget HTML-kode, men filen kaldes som en exe-fil i din browser via 'localhost'.Du kan så (morer mig) lægge html-kode ind i en database (memo) - og redigere i koden hvorefter du opdaterer din exe-fil i browseren og ser resultatet med det samme uden 'gem' mig her og der for at flytte en lille streg.
Avatar billede koden12 Nybegynder
27. august 2003 - 19:59 #9
Tak mange tak , men så skrap er jeg ikke at jeg kan finde ud af den.
Beklager dit store arbejde.
Jeg hentede resten :

Memo is displayed in grids as '(memo)' info.
To show the real memo text you can define the event "onGetText" of the memo
field as follows:

procedure TDMMain.DSetBLOB_FIELDGetText(Sender: TField;
  var Text: String; DisplayText: Boolean);
begin
  If DisplayText Then
  Begin
    Text:=(Sender as TBlobField).Value;
  End;
end;

In this example, the DataSet is "DSet", the field is "BLOB_FIELD" (in my
example I use a blob field, non e memo one); cast the Sender to the correct
type of field!

Fabiano

eller:

Text:=UpperCase(NomeTabella.FieldByName('NomeField').AsString);

Jeg ved ikke hvad Fabiao er : )

VH
SpørgerJørgen
Avatar billede janbb Juniormester
27. august 2003 - 20:17 #10
Spm.et er om der til den kode du anfører hører nogen komponenter, idet det som antydet er komplicerede ting, der - hvis de kunne løses med få programlinier ville have været mere alm. kendt.Men jeg vil følge spændt med i strengen her.
Avatar billede janbb Juniormester
27. august 2003 - 20:28 #11
Er det en bog eller en hjemmeside du har eks. fra ?.Italiensk ?.Et blad ?.
Avatar billede janbb Juniormester
27. august 2003 - 20:29 #12
hentede ?.Og det er slet ikke noget besvær ~ spændende spm. !.:-)
Avatar billede koden12 Nybegynder
27. august 2003 - 21:24 #13
Sidste nye !
Jeg kan godt skrive i den nu !
Den virker MEN den kan ikke beholde det i databasen eller opdater det.
Det slettes igen ?
VH
SpørgerJørgen
Avatar billede koden12 Nybegynder
11. januar 2004 - 13:54 #14
svar
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