Avatar billede janbb Juniormester
17. oktober 2003 - 17:51 Der er 7 kommentarer og
1 løsning

pastetodbgrid via ADODataset

Kan man overhovedet lave en pasteto via clipboard til en grid.Det kunne da være sjovt og høre om man kunne i det hele taget, men specifikt ville jeg være interesseret i at gøre det i en af Acces-mdb-erne, hvor man bruger dataset (ADO).Hvis det er for svært (har ikke set nogen eksempler selv) vil jeg gerne sætte spm. op med flere point, men i første omgang bare interesseret i 'sådan mere alment'.
Avatar billede borrisholt Novice
17. oktober 2003 - 19:01 #1
Hvad vil du paste fra ?

Jens B
Avatar billede janbb Juniormester
17. oktober 2003 - 20:11 #2
Clipboard
Avatar billede janbb Juniormester
17. oktober 2003 - 21:04 #3
Programmet jeg gerne ville flette det sammen med har jeg hentet fra delphiabout.coms databasetutorial, men jeg har oose andre programmer jeg kunne ønske denne 'udvidelse af fkt' i. Men her er et af eks.erne:
unit about2Unit1;

interface

uses



  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, OleCtrls, Grids, DBGrids, Db, ADODB,shellapi,ExtCtrls,SHDocVw,mask,
  DBCtrls;

type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    WebBrowser1: TWebBrowser;
    Memo1: TMemo;
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    DBNavigator1: TDBNavigator;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  // procedure CopyToClipboard;


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

var
  Form1: TForm1;

implementation

{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var ConStr: widestring;
begin
ConStr := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
          'Data Source=db.mdb;'+
          'Persist Security Info=False';

DBGrid1.DataSource := DataSource1;
DataSource1.DataSet := ADOQuery1;
ADOQuery1.Connection := ADOConnection1;
ADOConnection1.ConnectionString := ConStr;
ADOConnection1.LoginPrompt:=False;

Edit1.Text:='SELECT * FROM [tbl_Artikler]';
Memo1.Text:='';
end;
procedure TForm1.Button1Click(Sender: TObject);
var
  shtml    : widestring;
  htmlfile  : TextFile;
  i        : integer;
  AvailableFields: set of  TFieldType;
begin
AvailableFields:=[ftWideString, ftDate,  ftFloat];
//open query
ADOQuery1.SQL.Text:=Edit1.Text;
ADOQuery1.Open;

// --> create a html page

//html header
  shtml:= '<html> <head> <title>';
  shtml:= shtml + Edit1.Text;
  shtml:= shtml + '</title></head>' + #13#10;
  shtml:= shtml + '<body>' + #13#10;
  shtml:= shtml + 'Table created from query: <i>'
          + Edit1.Text + '</i>' + #13#10;

//table header
  shtml:= shtml + '<table border="1" width="100%">' + #13#10;
  shtml:= shtml + '<tr>' + #13#10;
  for i:=0 to AdoQuery1.FieldCount-1 do
  begin
    if ADOQuery1.Fields[i].DataType in AvailableFields  then
    begin
      shtml:= shtml + '<td>';
      shtml:= shtml +
              '<b>' +
              ADOQuery1.Fields[i].DisplayName +
              '</b>';
      shtml:= shtml + '</td>' + #13#10;
    end;
  end;{for}
  shtml:= shtml + '</tr>' + #13#10;

//table body
  while not adoquery1.Eof do
  begin
    shtml:= shtml + '<tr>' + #13#10;
    for i:=0 to AdoQuery1.FieldCount-1 do
    begin
      if ADOQuery1.Fields[i].DataType in AvailableFields then
      begin
        shtml:= shtml + '<td>';
        shtml:= shtml + ADOQuery1.Fields[i].AsString;
        shtml:= shtml + '</td>' + #13#10;
      end;
    end;{for}
    shtml:= shtml + '</tr>' + #13#10;
    ADOQuery1.Next;
  end;{while}
  shtml:= shtml + '</table>' + #13#10;

  shtml:= shtml + '</body></html>';
// --> assign to memo
  Memo1.Text := shtml;

// --> save in a htm file

AssignFile(htmlfile, 'test.htm');
//ChangeFileExt(Application.ExeName,'.htm'));
Rewrite(htmlfile);
//WriteLn( htmfile,shtml);
CloseFile(htmlfile);


// --> browse to the file
//WebBrowser1.Navigate(aboutproject1.htm);
WebBrowser1.Navigate(ChangeFileExt(
    Application.ExeName,'.htm'));
end;{Button1.OnClick}






procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.copytoclipboard;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
//WebBrowser1.Navigate(aboutproj2.htm);
WebBrowser1.Navigate(ChangeFileExt(
    Application.ExeName,'.htm'));
refresh;
end;

procedure TForm1.Button4Click(Sender: TObject);


VAR

  Lines : TStringList;

begin

begin
  Lines := TStringList.Create;


  begin
      Lines.Text :=Memo1.Lines.Text;

  end;
  Lines.SaveToFile('aboutProj2.htm');
  Lines.Free;
end;
end;

procedure TForm1.Button5Click(Sender: TObject);


begin
ADOQuery1.Close;
ADOConnection1.Close;
end;


end.
Avatar billede janbb Juniormester
17. oktober 2003 - 21:49 #4
Er der iøvrigt nogen der lige kan gennemskue hvorfor denne linie ikke virker:
(har måttet lave en halvaut. løsning i stedet):

WriteLn( htmfile,shtml);
Avatar billede janbb Juniormester
18. oktober 2003 - 04:36 #5
borrisholt: det er jo 'bare' fordi jeg ikke er kvik nok til at lave en edit2.pastefromclipboard, sådan som man normalt gør når man kan lade sit edit1 ref. til et felt via en tabel, sådan som man normalt gør.Det kan jo godt være det er lettere at lave nogen editeringsfelter og lave en ref lissom til gridden (har ikke tænkt det igennem), men det kan jo hurtigt go hen og blive ret mange felter ? ikke.
Avatar billede janbb Juniormester
18. oktober 2003 - 04:43 #6
Jeg kan jo osse bide i det sure æble og smide tabellen ind.Det var mere for at programmet skulle kunnet bruges til foskellige tabeller hvor man så bare skulle ændre navnet på DB.en (men jeg kan forestille mig det ikke er så ligetil - har lige læst noget om mousedown osv i en dbgrid og det er muligvis ikke besværet værd, men jeg ville bare have en 'kvalificeret' bedømmelse af stot problem / lille problem ? Ville ikke 'undvære det' hvis det bare var mig der (som så ofte før) ikke havde set 'lyset'.
Avatar billede janbb Juniormester
18. oktober 2003 - 18:07 #7
borrisholt: tror foreløb jeg vil lave en sep form for hver tabel så.Er ellers meget inspireret af dine eksempler med ADO hvor man kan bruge programmet til 'en hvilken som helst' DB. :-)
Avatar billede janbb Juniormester
18. oktober 2003 - 18:07 #8
lukker
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