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

📄 cls_datapub.pas

📁 用Delhpi和mapx开发的警务管理系统
💻 PAS
📖 第 1 页 / 共 5 页
字号:
        if msArrDataValue[iLoop]<>'' then
          sqlString:=sqlString + msArrColumnName[iLoop] + '=''' + msArrDataValue[iLoop] + ''','
        else
          sqlString:=sqlString + msArrColumnName[iLoop] + '='' ' + ''',';
      end
      else if UpperCase(msArrColumnType[iLoop])='LONGTITUDE' then
      begin
        if msArrDataValue[iLoop]<>'' then
          sqlString:=sqlString + msArrColumnName[iLoop] + '=''' + msArrDataValue[iLoop] + ''','
        else
          sqlString:=sqlString + msArrColumnName[iLoop] + '='' ' + ''',';
      end
      else if UpperCase(msArrColumnType[iLoop])='LATITUDE' then
      begin
        if msArrDataValue[iLoop]<>'' then
          sqlString:=sqlString + msArrColumnName[iLoop] + '=''' + msArrDataValue[iLoop] + ''','
        else
          sqlString:=sqlString + msArrColumnName[iLoop] + '='' ' + ''',';
      end
      else if UpperCase(msArrColumnType[iLoop])='NUMBER' then
      begin
        if msArrDataValue[iLoop]<>'' then
          sqlString:=sqlString + msArrColumnName[iLoop] + '=' + msArrDataValue[iLoop] + ','
        else
          sqlString:=sqlString + msArrColumnName[iLoop] + '=0' + ',';
      end
      else if UpperCase(msArrColumnType[iLoop])='DATE' then
        sqlString:= sqlString + msArrColumnName[iLoop] + '=''' + msArrDataValue[iLoop] + ''','
      else if UpperCase(msArrColumnType[iLoop])='TIME' then
        sqlString:= sqlString + msArrColumnName[iLoop] + '=''' + msArrDataValue[iLoop] + ''',';
    end;
  end;
  sqlString:=copy(sqlString,1,length(sqlString)-1);
  //where 条件
  sqlString:=sqlString + ' where ';
    for iLoop:=0 to miColumnCount -1 do
  begin
    if miArrColumnPri[iLoop]=1 then
    begin
      if UpperCase(msArrColumnType[iLoop])='VARCHAR2' then
        sqlString:=sqlString + msArrColumnName[iLoop] + '=''' + msArrDataValue[iLoop] + ''' and   '
      else if UpperCase(msArrColumnType[iLoop])='LONGTITUDE' then
        sqlString:=sqlString + msArrColumnName[iLoop] + '=''' + msArrDataValue[iLoop] + ''' and   '
      else if UpperCase(msArrColumnType[iLoop])='LATITUDE' then
        sqlString:=sqlString + msArrColumnName[iLoop] + '=''' + msArrDataValue[iLoop] + ''' and   '
      else if UpperCase(msArrColumnType[iLoop])='NUMBER' then
        begin
          if msArrDataValue[iLoop]<>'' then
            sqlString:=sqlString + msArrColumnName[iLoop] + '=' + msArrDataValue[iLoop] + ' and   '
          else
            sqlString:=sqlString + msArrColumnName[iLoop] + '=0' + ' and   ';
        end
      else if UpperCase(msArrColumnType[iLoop])='DATE' then
        sqlString:= sqlString + msArrColumnName[iLoop] + '=''' + msArrDataValue[iLoop] + ''' and   ';
    end;
  end;
  sqlString:=copy(sqlString,1,length(sqlString)-6);
  try
    mdataOperate.blnExecuteSQL(sqlString);
  except on E:Exception do
    begin
      Application.MessageBox('修改失败!','提示',MB_OK + MB_ICONINFORMATION);
      exit;
    end;
  end;
  lvChangeData;
  Application.MessageBox('修改成功!','提示',MB_OK + MB_ICONINFORMATION);
end;
//*********************************************
//         删除记录时更新ListView的显示       *
//                                            *
//                                            *
//*********************************************
procedure Tdatapub.lvDeleteData;
var
  iLoop:integer;
  iIndex:integer;
begin
  for iLoop:=0 to lv_Temp.Items.Count -1 do
  begin
    if lv_Temp.Items[iLoop].Selected= true then
      begin
        iIndex:=iLoop;
        break;
      end;
  end;
  lv_Temp.Items[iIndex].Delete;
end;
//*********************************************
//         删除记录                           *
//                                            *
//                                            *
//*********************************************
procedure Tdatapub.blnDeleteRecord;
var
  sqlString:string;
  iLoop:integer;
  strMessage:string;
begin
  //得到用户输入的数据
  sGetDataValue;
  //检查关联性
  if iCheckRelation =0 then
    begin
      strMessage:=msRelTableMemo + '中存在关联资源,请重试!';
      Application.MessageBox(pchar(strMessage),'提示',MB_OK + MB_ICONINFORMATION);
      exit;
    end;
  //形成Delete Sql 语句
  sqlString:='delete from ' + msTableName + ' where ';
  for iLoop:=0 to miColumnCount -1 do
  begin
    if miArrColumnPri[iLoop]=1 then
    begin
      if UpperCase(msArrColumnType[iLoop])='VARCHAR2' then
        sqlString:=sqlString + msArrColumnName[iLoop] + '=''' + msArrDataValue[iLoop] + ''' and   '
      else if UpperCase(msArrColumnType[iLoop])='LONGTITUDE' then
        sqlString:=sqlString + msArrColumnName[iLoop] + '=''' + msArrDataValue[iLoop] + ''' and   '
      else if UpperCase(msArrColumnType[iLoop])='LATITUDE' then
        sqlString:=sqlString + msArrColumnName[iLoop] + '=''' + msArrDataValue[iLoop] + ''' and   '
      else if UpperCase(msArrColumnType[iLoop])='NUMBER' then
        begin
          if msArrDataValue[iLoop]<>'' then
            sqlString:=sqlString + msArrColumnName[iLoop] + '=' + msArrDataValue[iLoop] + ' and   '
          else
            sqlString:=sqlString + msArrColumnName[iLoop] + '=0'+ ' and   ';
        end
      else if UpperCase(msArrColumnType[iLoop])='DATE' then
        sqlString:= sqlString + msArrColumnName[iLoop] + '=''' + msArrDataValue[iLoop] + ''' and   ';
    end;
  end;
  sqlString:=copy(sqlString,1,length(sqlString)-6);
  try
    mdataOperate.blnExecuteSQL(sqlString);
  except on E:Exception do
    begin
      Application.MessageBox('删除失败!','提示',MB_OK + MB_ICONINFORMATION);
      exit;
    end;
  end;
  lvDeleteData;
  Application.MessageBox('删除成功!','提示',MB_OK + MB_ICONINFORMATION);

end;

//*********************************************
//         形成Select                         *
//                                            *
//                                            *
//*********************************************
function  TdataPub.sFormSelectSql:string;
var
  sqlString:string;
  iLoop:integer;
  sResultString:string;
begin
  //形成Add sql 语句
  sqlString:='select ';
  for iLoop:=0 to miColumnCount -1 do
  begin
    if (UpperCase(msArrColumnType[iLoop])<>'BLOB') and (UpperCase(msArrColumnType[iLoop])<>'TABLE') then
      sqlString:=sqlString + msArrColumnName[iLoop] + ',';
  end;
  sqlString:=copy(sqlString,1,length(sqlString)-1);
  sqlString:=sqlString + ' from ' + msTableName  ;
  Result:=sqlString;
end;

//*********************************************
//         形成WhereSql语句                   *
//                                            *
//                                            *
//*********************************************
function  TdataPub.sFormWhereSql:string;
var
  sqlString:string;
  iLoop:integer;
  sResultString:string;
begin
  //得到用户输入的数据
  sGetDataValue;
  sqlString:=' where ';
  for iLoop:=0 to miColumnCount -1 do
  begin
    if (UpperCase(msArrColumnType[iLoop])='VARCHAR2') and (msArrDataValue[iLoop]<>'') then
      sqlString:=sqlString + msArrColumnName[iLoop] + '=''' + msArrDataValue[iLoop] + ''' and   '
    else if (UpperCase(msArrColumnType[iLoop])='LONGTITUDE') and (msArrDataValue[iLoop]<>'') then
      sqlString:=sqlString + msArrColumnName[iLoop] + '=''' + msArrDataValue[iLoop] + ''' and   '
    else if (UpperCase(msArrColumnType[iLoop])='LATITUDE') and (msArrDataValue[iLoop]<>'') then
      sqlString:=sqlString + msArrColumnName[iLoop] + '=''' + msArrDataValue[iLoop] + ''' and   '
    else if (UpperCase(msArrColumnType[iLoop])='NUMBER') and (msArrDataValue[iLoop]<>'') then
      sqlString:=sqlString + msArrColumnName[iLoop] + '=' + msArrDataValue[iLoop] + ' and   '
    else if (UpperCase(msArrColumnType[iLoop])='DATE') and (pos('2',msArrColumnName[iLoop])=0) then
      sqlString:= sqlString + msArrColumnName[iLoop] + ' >= ' + floattostr(strtodate(msArrDataValue[iLoop]))+ ' and   '
    else if (UpperCase(msArrColumnType[iLoop])='DATE') and (pos('2',msArrColumnName[iLoop])<>0) then
      sqlString:= sqlString + msArrColumnName[iLoop-1] + ' <= ' + floattostr(strtodate(msArrDataValue[iLoop])) + ' and   '
    else if (UpperCase(msArrColumnType[iLoop])='TIME') and (pos('2',msArrColumnName[iLoop])=0) then
      sqlString:= sqlString + msArrColumnName[iLoop] + ' >= ' + floattostr(strtotime(msArrDataValue[iLoop]))+ ' and   '
    else if (UpperCase(msArrColumnType[iLoop])='TIME') and (pos('2',msArrColumnName[iLoop])<>0) then
      sqlString:= sqlString + msArrColumnName[iLoop-1] + ' <= ' + floattostr(strtotime(msArrDataValue[iLoop])) + ' and   ';
  end;
  sqlString:=copy(sqlString,1,length(sqlString)-6);
  Result:=sqlString;
end;

//*********************************************
//         根据字段名得到字段的序号           *
//                                            *
//                                            *
//*********************************************
function  TdataPub.iGetColumnIndex(sColumnName:string):integer;
var
  iLoop:integer;
begin
  for iLoop:=0 to HIGH(msArrColumnName) do
  begin
    if UpperCase(sColumnName)= msArrColumnName[iLoop] then
    begin
      Result:=iLoop;
      break;
    end;
  end;
end;
//*********************************************
//                      *
//                                            *
//                                            *
//*********************************************
procedure TDataPub.lvDataShow();
var
  iLoop,jLoop:integer;
  PtableTemp:pTable;
  iNum:integer;
begin
  PtableTemp:=mAttribute.Selected.Data;
  iNum:=0;
  for iLoop:=0 to mContainer.ControlCount -1 do
  begin
    if (mContainer.Controls[iLoop] is TBase_LabeledEdit) then
    begin
      TBase_LabeledEdit(mContainer.Controls[iLoop]).Text:=PtableTemp^.DataValue[iNum];
      iNum:=iNum + 1;
    end
    else if (mContainer.Controls[iLoop] is TMaskEdit) then
    begin
      TMaskEdit(mContainer.Controls[iLoop]).Text:=PtableTemp^.DataValue[iNum];
      iNum:=iNum + 1;
    end
    else if (mContainer.Controls[iLoop] is TBase_ComboBox) then
    begin
      for jLoop:=0 to TBase_ComboBox(mContainer.Controls[iLoop]).Items.Count -1 do
      begin
        if TBase_ComboBox(mContainer.Controls[iLoop]).itemsvalue[jloop]=PtableTemp^.DataValue[iNum] then
          begin
            TBase_ComboBox(mContainer.Controls[iLoop]).ItemIndex :=jLoop;
            break;
          end;
      end;
      iNum:=iNum + 1;
    end
    else if (mContainer.Controls[iLoop] is TBase_DateTimePicker) then
    begin
      //TBase_DateTimePicker(mContainer.Controls[iLoop]).Date:=strtodate(PtableTemp^.DataValue[iNum]);
      iNum:=iNum + 1;
    end
    else if (mContainer.Controls[iLoop] is TBase_Time) then
    begin
      //TBase_Time(mContainer.Controls[iLoop]).Time:=strtotime(PtableTemp^.DataValue[iNum]);
      iNum:=iNum + 1;
    end
    else if (mContainer.Controls[iLoop] is TBase_BitBtn) then
    begin
      mContainer.Controls[iLoop].Enabled:=true;
      iNum:=iNum + 1;
    end;
  end;
  sGetDataValue;
  sGetRelTable;
  sGetRelColumn;
end;

procedure TDataPub.ShowData;
var
  iLoop,jLoop:integer;
  PtableTemp:pTable;
  iNum:integer;
begin
  PtableTemp:=mAttribute.Selected.Data;
  iNum:=0;
  for iLoop:=0 to mContainer.ControlCount -1 do
  begin
    if (mContainer.Controls[iLoop] is TBase_LabeledEdit) then
    begin
      TBase_LabeledEdit(mContainer.Controls[iLoop]).Text:=PtableTemp^.DataValue[iNum];
      iNum:=iNum + 1;
    end
    else if (mContainer.Controls[iLoop] is TMaskEdit) then
    begin
      TMaskEdit(mContainer.Controls[iLoop]).Text:=PtableTemp^.DataValue[iNum];
      iNum:=iNum + 1;
    end
    else if (mContainer.Controls[iLoop] is TBase_ComboBox) then
    begin
      for jLoop:=0 to TBase_ComboBox(mContainer.Controls[iLoop]).Items.Count -1 do
      begin
        if TBase_ComboBox(mContainer.Controls[iLoop]).itemsvalue[jloop]=PtableTemp^.DataValue[iNum] then
          begin
            TBase_ComboBox(mContainer.Controls[iLoop]).ItemIndex :=jLoop;
            break;
          end;
      end;
      iNum:=iNum + 1;
    end
    else if (mContainer.Controls[iLoop] is TBase_DateTimePicker) then
    begin
      //TBase_DateTimePicker(mContainer.Controls[iLoop]).Date:=strtodate(PtableTemp^.DataValue[iNum]);
      iNum:=iNum + 1;
    end
    else if (mContainer.Controls[iLoop] is TBase_Time) then
    begin
      //TBase_Time(mContainer.Controls[iLoop]).Time:=strtotime(PtableTemp^.DataValue[iNum]);
      iNum:=iNum + 1;
    end
    else if (mContainer.Controls[iLoop] is TBase_BitBtn) then
    begin
      mContainer.Controls[iLoop].Enabled:=true;
      iNum:=iNum + 1;
    end;
  end;
  {sGetDataValue;
  sGetRelTable;
  sGetRelColumn;
  mcb_Relate.Clear;
  for iLoop:=0 to High(msArrRelTableNames) do
  begin
    mcb_Relate.itemsvalue.Add(msArrRelTableNames[iLoop]);
    mcb_Relate.items.Add(sGetRelTableMemo(msArrRelTableNames[iLoop]));
    mcb_Relate.ItemIndex:=0;
  end;}
end;


end.

⌨️ 快捷键说明

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