现有两张表,一张名为question,字段:question_id,question,picture_id。
另一张名为picture,字段:picture_id,picture。
如何将所有题目的文字和图片输出到word中,并实现自动排版?
在线等,给出代码立即结帖。
要求用ADOQuery连接数据库。

解决方案 »

  1.   

    窗口上放一个ADOQuery,属性设置好后,在放置的按钮的点击事件中加入如下代码:
    var
      MYWord: variant;
      Stream: TFileStream;
      i: integer;
      TmpPath: array[0..255] of char;
      MyPath: string;
    begin  
      GetTempPath(255, @TmpPath);
      MyPath := StrPas(TmpPath) + '\tmp.bmp';  
      counter := 0;  
      
      try
        MYWord := createoleobject('word.Application');
        MyWord.Visible := True;
        MYWord.Documents.Add;
      except
        ShowMessage('没有发现WORD,请安装!');
        exit;
      end;  with ADOQuery1 do
      begin
        Close;
        sql.Clear;
        sql.Add('select * from question,picture where question.picture_id=picture.picture._id');
        Open;
        First;    
        
        MyWord.selection.Font.Size := 10;
        MyWord.selection.Font.Bold := 0;   //是否加粗
        MyWord.selection.Paragraphs.Alignment := wdAlignParagraphLeft;
        
        
        for i := 0 to ADOQuery1.recordcount-1 do
        begin
            //插入题目
            MyWord.selection.TypeText(fieldbyname('question').asstring);
            MyWord.Selection.TypeParagraph;           
            //插入图片
            TBlobField(FieldByName('picture')).SaveToFile(MyPath);
            MyWord.Selection.InlineShapes.AddPicture(MyPath);
            MyWord.Selection.TypeParagraph;
            next;  
        end;
      end;
    end;