📄 querysql.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "QuerySql.h"
#include "DM1.h"
#include "PrintSet.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormQuerySql *FormQuerySql;
//---------------------------------------------------------------------------
__fastcall TFormQuerySql::TFormQuerySql(TComponent* Owner)
: TForm(Owner)
{
}
//------------------------------------------
int __fastcall TFormQuerySql::CheckTj()
{
if (ComboBoxColumn1->ItemIndex == -1) return 1;
if (ComboBoxTj1->ItemIndex == -1) return 1;
if (ComboBoxTj1->Text == "空" || ComboBoxTj1->Text == "非空") return 5;
if (Edit1->Text.Trim().IsEmpty()) return 1;
if (pQuery->FieldByName(ComboBoxColumn2->Items->Strings[ComboBoxColumn1->ItemIndex])->DataType == ftInteger)
{
try
{
StrToInt(Edit1->Text);
}
catch(...)
{
return 2;
}
return 3;
}
else if (pQuery->FieldByName(ComboBoxColumn2->Items->Strings[ComboBoxColumn1->ItemIndex])->DataType == ftSmallint)
{
try
{
StrToInt(Edit1->Text);
}
catch(...)
{
return 2;
}
return 3;
}
else if (pQuery->FieldByName(ComboBoxColumn2->Items->Strings[ComboBoxColumn1->ItemIndex])->DataType == ftWord)
{
try
{
StrToInt(Edit1->Text);
}
catch(...)
{
return 2;
}
return 3;
}
else if (pQuery->FieldByName(ComboBoxColumn2->Items->Strings[ComboBoxColumn1->ItemIndex])->DataType == ftFloat)
{
try
{
StrToFloat(Edit1->Text);
}
catch(...)
{
return 2;
}
return 3;
}
else if (pQuery->FieldByName(ComboBoxColumn2->Items->Strings[ComboBoxColumn1->ItemIndex])->DataType == ftBoolean)
{
if (Edit1->Text.Trim() == "1" || Edit1->Text.Trim() == "0" || Edit1->Text.Trim().LowerCase() == "true" || Edit1->Text.Trim().LowerCase() == "false")
{
if (Edit1->Text.Trim().LowerCase() == "true") Edit1->Text = "1";
else if(Edit1->Text.Trim().LowerCase() == "false") Edit1->Text = "0";
}
else
{
return 2;
}
return 3;
}
else return 4;
}
//---------------------------------------------------------------------------
void __fastcall TFormQuerySql::FormCreate(TObject *Sender)
{
//pQuery = GetQuery("QRenShi");
//DataSource1->DataSet = pQuery;
StringGrid1->Cells[0][0] = "关系";
StringGrid1->Cells[1][0] = "列";
StringGrid1->Cells[2][0] = "条件";
StringGrid1->Cells[3][0] = "值";
}
//---------------------------------------------------------------------------
void __fastcall TFormQuerySql::FormShow(TObject *Sender)
{
//pQuery->Open();
ComboBoxColumn1->Items->Clear();
ComboBoxColumn2->Items->Clear();
for (int i = 0;i < pGrid->Columns->Count; i++)
{
ComboBoxColumn1->Items->Add(pGrid->Columns->Items[i]->Title->Caption);
ComboBoxColumn2->Items->Add(pGrid->Columns->Items[i]->FieldName);
}
}
//---------------------------------------------------------------------------
void __fastcall TFormQuerySql::BitBtnAddClick(TObject *Sender)
{
int nFlag,nRow;
AnsiString sTemp;
nFlag = CheckTj();
if (nFlag == 1)
{
ShowMessage("请输入查询条件!");
return;
}
if (nFlag == 2)
{
ShowMessage("输入的值与该字段的数据类型不匹配!");
Edit1->SetFocus();
return;
}
if (Panel1->Visible)
{
if (RBAnd->Checked) sTemp = sTemp + " and";
else sTemp = sTemp + " or";
}
if (nFlag == 3)
{
sTemp = sTemp + " " + ComboBoxColumn2->Items->Strings[ComboBoxColumn1->ItemIndex] + " " + ComboBoxTj2->Items->Strings[ComboBoxTj1->ItemIndex] + " " + Edit1->Text.Trim();
}
else if (nFlag == 4)
{
sTemp = sTemp + " " + ComboBoxColumn2->Items->Strings[ComboBoxColumn1->ItemIndex] + " " + ComboBoxTj2->Items->Strings[ComboBoxTj1->ItemIndex] + " '" + Edit1->Text.Trim() + "'";
}
else if (nFlag == 5)
{
sTemp = sTemp + " " + ComboBoxColumn2->Items->Strings[ComboBoxColumn1->ItemIndex] + " " + ComboBoxTj2->Items->Strings[ComboBoxTj1->ItemIndex];
Edit1->Text = "";
}
Memo2->Lines->Add(sTemp);
sTemp = "";
if (Panel1->Visible)
{
if (RBAnd->Checked) sTemp = "并且";
else sTemp = "或者";
}
nRow = StringGrid1->RowCount - 1;
StringGrid1->Cells[0][nRow] = sTemp;
StringGrid1->Cells[1][nRow] = ComboBoxColumn1->Text;
StringGrid1->Cells[2][nRow] = ComboBoxTj1->Text;
StringGrid1->Cells[3][nRow] = Edit1->Text;
StringGrid1->RowCount +=1;
Edit1->Text = "";
LabelGx->Visible = true;
Panel1->Visible = true;
}
//---------------------------------------------------------------------------
void __fastcall TFormQuerySql::BitBtnClearClick(TObject *Sender)
{
for(int i = 1; i < StringGrid1->RowCount ; i++)
{
StringGrid1->Cells[0][i] = "";
StringGrid1->Cells[1][i] = "";
StringGrid1->Cells[2][i] = "";
StringGrid1->Cells[3][i] = "";
}
StringGrid1->RowCount = 2;
Memo2->Clear();
LabelGx->Visible = false;
Panel1->Visible = false;
}
//---------------------------------------------------------------------------
void __fastcall TFormQuerySql::BitBtn1Click(TObject *Sender)
{
sSql = "";
sSql = Memo2->Text;
if (sSql != "")
sSql = "where (" + sSql + ")";
}
//---------------------------------------------------------------------------
void __fastcall TFormQuerySql::BitBtnQuitClick(TObject *Sender)
{
sSql = "";
}
//---------------------------------------------------------------------------
void __fastcall TFormQuerySql::ComboBoxTj1Click(TObject *Sender)
{
if (ComboBoxTj1->Text == "is") Edit1->Text = "";
}
//---------------------------------------------------------------------------
void __fastcall TFormQuerySql::RBAndClick(TObject *Sender)
{
RBOr->Font->Color = clBlack;
RBAnd->Font->Color = clBlue;
}
//---------------------------------------------------------------------------
void __fastcall TFormQuerySql::RBOrClick(TObject *Sender)
{
RBOr->Font->Color = clBlue;
RBAnd->Font->Color = clBlack;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -