📄 queryform.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <stdlib.h>
#include <stdio.h>
#include "QueryForm.h"
#include "DM1.h"
#include "HugSnowData.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfmQuery *fmQuery;
//---------------------------------------------------------------------------
__fastcall TfmQuery::TfmQuery(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfmQuery::FormActivate(TObject *Sender)
{
LoadList(DM->tbKey,clbKey->Items);
LoadStringFromDataSet(clbKey->Items,DM->tbInfoType,DM->tbInfoType->FieldByName("信息类型"),false);
LoadStringFromDataSet(clbKey->Items,DM->tbFileType,DM->tbFileType->FieldByName("文件类型"),false);
LoadList(DM->tbInfoType,cbInfo->Items);
cbInfo->Items->Add("全部类型");
cbInfo->ItemIndex=cbInfo->Items->Count-1;
LoadList(DM->tbFileType,cbFile->Items);
cbFile->Items->Add("全部类型");
cbFile->ItemIndex=cbFile->Items->Count-1;
pc1->ActivePageIndex=0;
}
//---------------------------------------------------------------------------
//从数据库装入列表
void TfmQuery::LoadList(TDataSet * DataSet, TStrings * sl)
{
DataSet->First();
sl->Clear();
while(!DataSet->Eof)
{
sl->Add(DataSet->FieldList->Fields[0]->AsString);
DataSet->Next();
}
}
//------------------------------------------------------------------
void __fastcall TfmQuery::btQueryClick(TObject *Sender)
{
if(DM->q->Active)DM->q->Close();
DM->q->SQL->Clear();
DM->q->SQL->Add("SELECT 文件说明,扩展名,文件内容 FROM 信息库 WHERE (USERID="+QuotedStr(DM->tbUser->FieldByName("USERID")->AsString));
//Query other public infomation
if(chk1->Checked)
DM->q->SQL->Add(" OR 公开=true OR USERID IN(SELECT USERID FROM 用户信息 WHERE 公开资料=TRUE)");
DM->q->SQL->Add(")");
DM->q->SQL->Add("AND (");
int i,k=0;
//关键字条件
AnsiString gx=(rgGx->ItemIndex==0)?"AND":"OR";
for(i=0;i<clbKey->Items->Count;i++)
if(clbKey->Checked[i])
{
DM->q->SQL->Add(" 关键字 LIKE \'%"+clbKey->Items->Strings[i]+"%\' ");
DM->q->SQL->Add(gx);
k++;
}
DM->q->SQL->Delete(DM->q->SQL->Count-1);
if(k>0)
DM->q->SQL->Add(")");
//信息类型条件
if(cbInfo->ItemIndex<cbInfo->Items->Count-1)
DM->q->SQL->Add("AND 信息类型="+QuotedStr(cbInfo->Text));
//文件类型条件
if(cbFile->ItemIndex<cbFile->Items->Count-1)
DM->q->SQL->Add("AND 文件类型="+QuotedStr(cbFile->Text));
//排序
if(rgSort->ItemIndex<3)
{
gx="ORDER BY "+rgSort->Items->Strings[rgSort->ItemIndex]+" ";
gx+=(rgSortRule->ItemIndex==0)?"ASC":"DESC";
DM->q->SQL->Add(gx);
}
//ShowMessage(DM->q->SQL->Text);
DM->q->Open();
pc1->ActivePageIndex=1;
sb1->Panels->Items[1]->Text=DM->q->RecordCount;
sb1->Panels->Items[3]->Text=DM->q->RecNo;
}
//---------------------------------------------------------------------------
void __fastcall TfmQuery::btExportClick(TObject *Sender)
{
TLocateOptions Opts;
AnsiString ext=DM->q->FieldByName("扩展名")->AsString;
sd1->Filter=ext.SubString(2,ext.Length())+"文件|*"+ext;
sd1->DefaultExt=ext;
if(sd1->Execute())
{
(dynamic_cast<TBlobField *>(DM->q->FieldByName("文件内容")))->SaveToFile(sd1->FileName);
if(MessageBox(NULL,
"文件已保存,要马上打开吗?",
"保存文件",
MB_YESNO|MB_ICONQUESTION
)==IDYES
)
if(UINT(ShellExecute(NULL,"open",sd1->FileName.c_str(),NULL,NULL,SW_SHOWNORMAL))<=32)
{
if(edExe->Text.IsEmpty())
edExe->Text="NotePad";
ShellExecute(NULL,"open",edExe->Text.c_str(),sd1->FileName.c_str(),NULL,SW_SHOWNORMAL);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfmQuery::btViewClick(TObject *Sender)
{
AnsiString tmp=getenv("Temp");
char s[80];
tmpnam(s);
tmp=tmp+"\\"+s;
tmp=ChangeFileExt(tmp,DM->q->FieldByName("扩展名")->AsString);
(dynamic_cast<TBlobField *>(DM->q->FieldByName("文件内容")))->SaveToFile(tmp);
if(UINT(ShellExecute(NULL,"open",tmp.c_str(),NULL,NULL,SW_SHOWNORMAL))<=32)
{
if(edExe->Text.IsEmpty())
edExe->Text="NotePad";
ShellExecute(NULL,"open",edExe->Text.c_str(),tmp.c_str(),NULL,SW_SHOWNORMAL);
}
}
//---------------------------------------------------------------------------
void __fastcall TfmQuery::DBNavigator1Click(TObject *Sender,
TNavigateBtn Button)
{
sb1->Panels->Items[1]->Text=DM->q->RecordCount;
sb1->Panels->Items[3]->Text=DM->q->RecNo;
}
//---------------------------------------------------------------------------
void __fastcall TfmQuery::btDeleteClick(TObject *Sender)
{
if(MessageBox(NULL,
"你真的要删除指定条件的记录吗?\n这些记录将不能恢复!",
"条件删除",
MB_OKCANCEL|MB_ICONWARNING|MB_DEFBUTTON2
)
!=IDOK)
return;
if(DM->q->Active)DM->q->Close();
DM->q->SQL->Clear();
DM->q->SQL->Add("DELETE FROM 信息库 WHERE USERID="+QuotedStr(DM->tbUser->FieldByName("USERID")->AsString));
//delete public infomation
if(chk2->Checked)
DM->q->SQL->Add("AND 公开=TRUE");
DM->q->SQL->Add("AND (");
int i,k=0;
//关键字条件
AnsiString gx=(rgGx->ItemIndex==0)?"AND":"OR";
for(i=0;i<clbKey->Items->Count;i++)
if(clbKey->Checked[i])
{
DM->q->SQL->Add(" 关键字 LIKE \'%"+clbKey->Items->Strings[i]+"%\' ");
DM->q->SQL->Add(gx);
k++;
}
DM->q->SQL->Delete(DM->q->SQL->Count-1);
if(k>0)
DM->q->SQL->Add(")");
//信息类型条件
if(cbInfo->ItemIndex<cbInfo->Items->Count-1)
DM->q->SQL->Add("AND 信息类型="+QuotedStr(cbInfo->Text));
//文件类型条件
if(cbFile->ItemIndex<cbFile->Items->Count-1)
DM->q->SQL->Add("AND 文件类型="+QuotedStr(cbFile->Text));
ShowMessage(DM->q->SQL->Text);
DM->q->ExecSQL();
ShowMessage("已经完成删除操作!");
}
//---------------------------------------------------------------------------
AnsiString TfmQuery::GetEx(AnsiString FileType)
{
/*TADOQuery *q=new TADOQuery(this);
AnsiString s="";
q->Connection=DM->ADOC1;
q->SQL->Add("SELECT 扩展名 FROM 文件类型 WHERE 文件类型="+QuotedStr(FileType));
q->Open();
if(q->RecordCount>0)
s=q->FieldByName("扩展名")->AsString;
q->Close();
delete q;
return s;*/
}
void __fastcall TfmQuery::btSelecrClick(TObject *Sender)
{
if(od1->Execute())
edExe->Text=od1->FileName;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -