你看一下delphi/demos下的pooler例程

解决方案 »

  1.   

    这个是在Type Library中建立的方法:
    procedure TrdmBBS.TeacherQuery(const vTeacher: WideString; var vNumber,
      vTime, vUserID, vSubject: OleVariant);
    var
      hobby : String;
      arrayNumber,arrayTime,arraySubject,arrayUser : Variant;
      len ,i: Integer;
    begin
      //取得老师所教科目
      qryMain.Close;
      qryMain.SQL.Clear;
      qryMain.SQL.Add('SELECT teacherPopedom FROM teacherInformation');
      qryMain.SQL.Add('WHERE teacherName = :pUserID');
      qryMain.Parameters.ParamValues['pUserID'] := vTeacher;
      if qryMain.Prepared = False then
      begin
        qryMain.Prepared := True;
      end;
      qryMain.Open;
      hobby := Trim(qryMain.FieldByName('teacherPopedom').AsString);
      qryMain.Close;
      qryMain.SQL.Clear;
      qryMain.SQL.Add('SELECT questionNumber , subject , userName , questionTime FROM questionMassageBoard');
      qryMain.SQL.Add('WHERE questionType = :pType');
      qryMain.SQL.Add('AND answerState = 0');
      qryMain.Parameters.ParamValues['pType'] := hobby;
      if qryMain.Prepared = False then
      begin
        qryMain.Prepared := True;
      end;
      qryMain.Open;
      len := qryMain.RecordCount;
      arrayNumber := VarArrayCreate([0,len-1],varInteger);
      arrayTime := VarArrayCreate([0,len-1],varDate);
      arraySubject := VarArrayCreate([0,len-1],varString);
      arrayUser := VarArrayCreate([0,len-1],varString);
      for i := 0 to len-1 do
      begin
        arrayNumber[i] := qryMain.FieldByName('questionNumber').AsInteger;
        arrayTime[i] := qryMain.FieldByName('questionTime').AsDateTime;
        arraySubject[i] := qryMain.FieldByName('subject').AsString;
        arrayUser[i] := qryMain.FieldByName('userName').AsString;
        qryMain.Next;
      end;
      vNumber := arrayNumber;
      vTime := arrayTime;
      vUserID := arrayUser;
      vSubject := arraySubject;
      qryMain.Close;
    end;
    你在client端用SocketConnection1.AppServer.TeacherQuery( vTeacher,vNumber, vTime, vUserID, vSubject);调用