📄 cls_datapub.pas
字号:
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 + -