⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dataselect.pas

📁 p2pdbanywhere 可以通过之udp方式远程连接数据库的组件,这个组件非常好,是Delphi7,9,2006能够使用,包含源码.
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  Result := TFieldLists.Create(Self,TFieldlist);
end;
procedure TDataItem.setdatatype(value:Tdatatype);
begin
  FDataType:=value;
end;
procedure TDataItem.setFieldLists(value:Tstrings);
begin
  FFieldLists.Assign(value);
end;
function Tfieldlists.GetOwner: TPersistent;
begin    
  Result :=FDataItem;
end;
procedure Tfieldlists.Update(Item: TCollectionItem);
begin
  inherited;
end;
function Tfieldlists.Add: TFieldList;
begin
  Result := TFieldList(inherited Add);
end;
function TDataItems.GetFromTableName(TableName:string):TDataItem;
var
   i:integer;
begin
  result:=nil;
  for i:=0 to self.Count-1 do
  begin
    if self.Items[i].TableName=TableName then
    begin
      result:=self.Items[i];
    end
  end;        
end;
procedure TDataItems.SynDataBase(TableName:string);
var
   i:integer;
begin
  for i:=0 to self.Count-1 do
  begin
    if self.Items[i].TableName=TableName then
    begin
      //先同步本地的
      self.FSyn.ADOConnection:=self.Items[i].FADOConnection;
      self.FSyn.RemoteHttpConnection:=self.Items[i].RemoteHttpConnection;
      self.FSyn.RemoteUdpConnection:=self.Items[i].RemoteUdpConnection;
      if self.Items[i].RemoteUdpConnection.IsOnLine then
      if self.Items[i].DataSetStyle=dslocal then
      begin
        self.FSyn.SynDataBase(self.Items[i].FLocalSetup.FTableName);
      end;
    end
  end;        
end;
procedure TDataItem.setgrid;
var
   i:integer;
begin
if self.FDataType=DTDatabase then
begin
  //设置表格显示的表头
  //首先清除原来的
  try
    if self.FDbGridStyle=GSDbGrid then
    begin
      fdataform.grid.Columns.Clear;
      for i:=0 to self.FFieldLists.Count-1 do
      begin
        with fdataform do
        begin
          grid.Columns.Insert(i);
          grid.Columns[i].FieldName:=self.FFieldLists.Names[i];
          grid.Columns[i].Title.Caption:=copy(self.FFieldLists.ValueFromIndex[i],4,
          length(self.FFieldLists.ValueFromIndex[i])-3);
          grid.Columns[i].Width:=strtoint(leftstr(self.FFieldLists.ValueFromIndex[i],3));
        end;
      end;
    end;
  except
    showmessage('数据格式不正确!');
  end;
  try
    if self.FDbGridStyle=GSDbGridEh then
    begin
      fdataform.grid.Columns.Clear;
      for i:=0 to self.FFieldLists.Count-1 do
      begin
        with fdataform do
        begin
          gridEh.Columns.Insert(i);
          grideh.Columns[i].FieldName:=self.FFieldLists.Names[i];
          grideh.Columns[i].Title.Caption:=copy(self.FFieldLists.ValueFromIndex[i],4,
          length(self.FFieldLists.ValueFromIndex[i])-3);
          grideh.Columns[i].Width:=strtoint(leftstr(self.FFieldLists.ValueFromIndex[i],3));
        end;
      end;
    end;
  except
    showmessage('数据格式不正确!');
  end;
end else
begin
  //固定内容
  //结构
  self.FStaticForm.qq.Close;
  self.FStaticForm.qq.FieldDefs.Clear;
  self.FStaticForm.qq.FieldDefs.Add('class_name',ftstring,50,true);
  self.FStaticForm.qq.CreateDataSet;
  //内容
  for i:=0 to self.FFieldLists.Count-1 do
  begin
    self.FStaticForm.qq.Append;
    self.FStaticForm.qq.FieldValues['class_name']:=self.FFieldLists.Strings[i];
    self.FStaticForm.qq.Post;
  end;
end;

end;
procedure TDataItem.ShowModal;
var
   i:integer;
begin
resultok:=false;
if self.FFormStyle=fstree then Fdataform.Width:=366 else Fdataform.Width:=666;
if self.FDataSetStyle=DSRemote then
if self.FRemoteSetup.FRemoteDataSet=nil then
begin
  showmessage('请设置查询组件!');
  exit;
end;
if self.FDataSetStyle=DSLocal then
if self.FLocalSetup.FLocalDataSet=nil then
begin
  showmessage('请设置查询组件!');
  exit;
end;
if self.FDataSetStyle=DSRemote then
begin
  self.FRemoteSetup.FRemoteDataSet.Remoteclose;
  self.FRemoteSetup.FSelectedDataSet.Remoteclose;
end;
if self.FDataSetStyle=DSLocal then
begin
  //self.FLocalSetup.FLocalDataSet.ClearFields;
  //self.FLocalSetup.FSelectedDataSet.ClearFields;
end;
if self.FDataType=DTDataBase then
begin
  //设置表格
  if FformStyle<>FSTree then
  begin
    self.setgrid;
    //设置搜索信息
    self.FDataForm.ComboBox1.Items.Clear;
    self.FDataForm.ComboBox3.Items.Clear; 
    for i:=0 to self.FFieldLists.Count-1 do
    begin
      //搜索字段
      self.FDataForm.ComboBox1.Items.Add(copy(self.FFieldLists.ValueFromIndex[i],
      4,length(self.FFieldLists.ValueFromIndex[i])-3));
      self.FDataForm.ComboBox3.Items.Add(self.FFieldLists.Names[i]);
    end;
    self.FDataForm.ComboBox1.ItemIndex:=0;
    self.FDataForm.ComboBox3.ItemIndex:=0;
    //设置执行查询的语句
    if FformStyle<>FSGrid then
    begin
    if self.FDataSetStyle=DSRemote then
    begin
      if (LowerCase(self.RemoteSetup.FClassEndFieldValue)='true')or
         (LowerCase(self.RemoteSetup.FClassEndFieldValue)='false') then
         self.FDataForm.tempsql:='select * from '+self.RemoteSetup.FTableName+
         ' where delete_mark=false and class_end=true'
      else
         self.FDataForm.tempsql:='select * from '+self.RemoteSetup.FTableName+
         ' where delete_mark=0 and class_end=1';
      self.FDataForm.rtqq:=self.RemoteSetup.FSelectedDataSet;
      self.FDataForm.Adoqq:=nil;
    end else
    begin
      if (LowerCase(self.FLocalSetup.FClassEndFieldValue)='true')or
         (LowerCase(self.FLocalSetup.FClassEndFieldValue)='false') then
         self.FDataForm.tempsql:='select * from '+self.FLocalSetup.FTableName+
         ' where delete_mark=false and class_end=true'
      else
          self.FDataForm.tempsql:='select * from '+self.FLocalSetup.FTableName+
         ' where delete_mark=0 and class_end=1';
      self.FDataForm.rtqq:=nil;
      self.FDataForm.Adoqq:=self.LocalSetup.FSelectedDataSet;
    end;
    end;
  end;
  //设置目录树
  if self.FFormStyle<>FSGrid then
  begin
    if self.FDataSetStyle=DSRemote then
    begin
      Fdataform.rv.ClassCodeFieldName:=self.RemoteSetup.FClassCodeFieldName;
      Fdataform.rv.ClassNameFieldName:=self.RemoteSetup.FClassNameFieldName;
      Fdataform.rv.ClassEndFieldName:=self.RemoteSetup.FClassEndFieldName;
      Fdataform.rv.ClassEndFieldValue:=self.RemoteSetup.FClassEndFieldValue;
      Fdataform.rv.ClassStep:=self.RemoteSetup.FClassStep;
      Fdataform.rv.OtherMarkField:=self.RemoteSetup.FOtherMarkField;
      Fdataform.rv.OtherMarkValue:=self.RemoteSetup.FOtherMarkValue;
      Fdataform.rv.OtherMarkSign:=self.RemoteSetup.FOtherMarkSign;
      Fdataform.rv.RemoteDataSet:=self.RemoteSetup.FRemoteDataSet;
      Fdataform.rv.SelectedDataSet:=self.RemoteSetup.FSelectedDataSet;
      Fdataform.rv.TableName:=self.RemoteSetup.FTableName;
      fdataform.rv.ShowClassTree;
      fdataform.DataSource1.DataSet:=self.FRemoteSetup.FSelectedDataSet;
    end;
    if self.FDataSetStyle=DSLocal then
    begin
      Fdataform.lv.ClassCodeFieldName:=self.LocalSetup.FClassCodeFieldName;
      Fdataform.lv.ClassNameFieldName:=self.LocalSetup.FClassNameFieldName;
      Fdataform.lv.ClassEndFieldName:=self.LocalSetup.FClassEndFieldName;
      Fdataform.lv.ClassEndFieldValue:=self.LocalSetup.FClassEndFieldValue;
      Fdataform.lv.ClassStep:=self.LocalSetup.FClassStep;
      Fdataform.lv.OtherMarkField:=self.LocalSetup.FOtherMarkField;
      Fdataform.lv.OtherMarkValue:=self.LocalSetup.FOtherMarkValue;
      Fdataform.lv.OtherMarkSign:=self.LocalSetup.FOtherMarkSign;
      Fdataform.lv.LocalDataSet:=self.LocalSetup.FLocalDataSet;
      Fdataform.lv.SelectedDataSet:=self.LocalSetup.FSelectedDataSet;
      Fdataform.lv.TableName:=self.LocalSetup.FTableName;
      fdataform.lv.ShowClassTree;
      fdataform.DataSource1.DataSet:=self.FLocalSetup.FSelectedDataSet;
    end;
  end;
  //是否查询表格内容
  if self.FFormStyle=FSTree then FdataForm.FShowSelectDb:=false;
  if self.FFormStyle=FSTreeGrid then FdataForm.FShowSelectDb:=true;
  //如果只有表格,则要执行sql语句
  if self.FFormStyle=FSGrid then
  begin
    if self.FDataSetStyle=DSRemote then
    begin
      Fdataform.DataSource1.DataSet:=self.RemoteSetup.FSelectedDataSet;
      self.RemoteSetup.FSelectedDataSet.Remoteclose;
      self.FRemoteSetup.FSelectedDataSet.RTSQL.Assign(self.FSQL);
      self.FRemoteSetup.FSelectedDataSet.RemoteOpen;
    end;
    if self.FDataSetStyle=DSLocal then
    begin
      Fdataform.DataSource1.DataSet:=self.FLocalSetup.FSelectedDataSet;
      self.FLocalSetup.FSelectedDataSet.Close;
      self.FLocalSetup.FSelectedDataSet.SQL.Assign(self.FSQL);
      self.FLocalSetup.FSelectedDataSet.Open;
    end;
  end;
  if Fdataform.ShowModal=mrok then
  if self.FFormStyle=FSTree then
  begin
    if self.FDataSetStyle=DSRemote then
    begin
      if Fdataform.rv.Selected.HasChildren then
      begin
        //self.CodeFieldValue:='';
        //self.NameFieldvalue:='';
        showmessage('请选择末级分类!'); 
      end else
      begin
        //self.CodeFieldValue:=Fdataform.rv.GetSelectedClassCode;
        self.CodeFieldValue:=Fdataform.rv.GetSelectedClassCode;
        self.NameFieldvalue:=fdataform.rv.Selected.Text;
      end;
    end else
    begin
      self.CodeFieldValue:=Fdataform.lv.GetSelectedClassCode;
      self.NameFieldvalue:=fdataform.lv.Selected.Text;
    end;
  end else
  begin
    if self.FDataSetStyle=DSRemote then
    begin
      if not self.FRemoteSetup.FSelectedDataSet.Active then exit;
      if self.FRemoteSetup.FSelectedDataSet.RecordCount=0 then exit;
      self.CodeFieldValue:=self.FRemoteSetup.FSelectedDataSet.fieldbyname(self.CodeField).AsString;
      self.NameFieldvalue:=self.FRemoteSetup.FSelectedDataSet.fieldbyname(self.NameField).AsString;
    end else
    begin
      if not self.FLocalSetup.FSelectedDataSet.Active then exit;
      if self.FLocalSetup.FSelectedDataSet.RecordCount=0 then exit;
      self.CodeFieldValue:=self.FLocalSetup.FSelectedDataSet.fieldbyname(self.CodeField).AsString;
      self.NameFieldvalue:=self.FLocalSetup.FSelectedDataSet.fieldbyname(self.NameField).AsString;
    end;
  end;
  resultok:=self.FDataForm.resultok;
end else
begin
  //固定文本方式
  self.setgrid;
  self.FStaticForm.ShowModal;
  self.CodeFieldValue:='';
  self.NameFieldvalue:=self.FStaticForm.qq.fieldbyname('class_name').AsString;
  resultok:=self.FStaticForm.resultok;
end;

end;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -