home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1997 April
/
Chip_1997-04_cd.bin
/
prezent
/
cb
/
data.z
/
QUERYFRM.CPP
< prev
next >
Wrap
C/C++ Source or Header
|
1997-01-16
|
9KB
|
287 lines
//----------------------------------------------------------------------------
//Borland C++ Builder
//Copyright (c) 1987 Borland International Inc. All Rights Reserved.
//----------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Demostrates how to execute a query in a background thread. This
// files contains the main user interface for this program. The background
// query code is in ResltFrm.
//---------------------------------------------------------------------------
#include <vcl\vcl.h>
#pragma hdrstop
#include "QueryFrm.h"
#include "bkstring.rc"
//---------------------------------------------------------------------------
#pragma resource "*.dfm"
TAdhocForm *AdhocForm;
AnsiString StrToIniStr(const AnsiString Str)
{
char Buffer[4096];
PChar B, S;
if (Str.Length() > sizeof(Buffer))
throw Exception("AnsiString too large to save in INI file");
S = Str.c_str();
B = Buffer;
while (*S != '\0')
{
switch (*S)
{
case 13:
case 10:
if ((*S == 13) && (S[1] == 10)) S++;
else if ((*S == 10) && (S[1] == 13)) S++;
*B = '\\';
B++;
*B = 'n';
B++;
S++;
break;
default:
*B = *S;
B++;
S++;
}
}
*B = '\0';
return String(Buffer);
}
String IniStrToStr(const String Str)
{
char Buffer[4096];
PChar B, S;
if (Str.Length() > sizeof(Buffer))
throw Exception("String to read from an INI file");
S = Str.c_str();
B = Buffer;
while (*S != '\0')
{
if ((S[0] == '\\') && (S[1] == 'n'))
{
*B = 13;
B++;
*B = 10;
B++;
S++;
S++;
}
else
{
*B = *S;
B++;
S++;
}
}
*B = '\0';
return String(Buffer);
}
//---------------------------------------------------------------------------
__fastcall TAdhocForm::TAdhocForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TAdhocForm::FormCloseQuery(TObject *Sender,
Boolean &CanClose)
{
CanClose = CheckModified();
}
//---------------------------------------------------------------------
Boolean __fastcall TAdhocForm::IsModified(void)
{
return ((AliasCombo->Text != OldAlias) || NameEdit->Modified ||
QueryEdit->Modified);
}
//---------------------------------------------------------------------
Boolean __fastcall TAdhocForm::CheckModified(void)
{
char szTemp[256];
Boolean Result = true;
sprintf(szTemp, "Query %s has been modified. Save?", QueryName);
if (IsModified())
switch (MessageDlg(szTemp,
mtConfirmation,
TMsgDlgButtons() << mbYes << mbNo << mbCancel,
0)){
case mrOk:
SaveQuery();
break;
case mrCancel:
Result = false;
break;
}
return Result;
}
//---------------------------------------------------------------------
void __fastcall TAdhocForm::Unmodify(void)
{
OldAlias = AliasCombo->Text;
NameEdit->Modified = false;
QueryEdit->Modified = false;
}
//---------------------------------------------------------------------
void __fastcall TAdhocForm::ReadQuery(void)
{
if (!CheckModified()) return;
QueryName = SavedQueryCombo->Items->Strings[SavedQueryCombo->ItemIndex];
QueryEdit->Text = IniStrToStr(SavedQueries->ReadString(QueryName, "Query", ""));
AliasCombo->Text = SavedQueries->ReadString(QueryName, "Alias", "");
NameEdit->Text = SavedQueries->ReadString(QueryName, "Name", "");
Unmodify();
if (Showing)
if (NameEdit->Text != "")
PasswordEdit->SetFocus();
else
QueryEdit->SetFocus();
}
//---------------------------------------------------------------------
void __fastcall TAdhocForm::SaveQuery(void)
{
if (Unnamed)
SaveQueryAs();
else
{
SavedQueries->WriteString(QueryName, "Query", StrToIniStr(QueryEdit->Text));
SavedQueries->WriteString(QueryName, "Alias", AliasCombo->Text);
SavedQueries->WriteString(QueryName, "Name", NameEdit->Text);
Unmodify();
}
}
void __fastcall TAdhocForm::SaveQueryAs(void)
{
if (GetNewName(QueryName)){
Unnamed = false;
SaveQuery();
if (SavedQueryCombo->Items->IndexOf(QueryName) < 0)
SavedQueryCombo->Items->Add(QueryName);
SavedQueryCombo->ItemIndex = SavedQueryCombo->Items->IndexOf(QueryName);
}
}
//---------------------------------------------------------------------
void __fastcall TAdhocForm::FormDestroy(TObject *Sender)
{
delete SavedQueries;
}
//---------------------------------------------------------------------
void __fastcall TAdhocForm::FormCreate(TObject *Sender)
{
int I;
// Grab session aliases
Session->GetAliasNames(AliasCombo->Items);
// Load in saved queries
SavedQueries = new TIniFile(".\\BKQUERY.INI");
SavedQueries->ReadSections(SavedQueryCombo->Items);
if (SavedQueryCombo->Items->Count <= 0)
CreateInitialIni();
SavedQueryCombo->ItemIndex = 0;
QueryName = SavedQueryCombo->Items->Strings[0];
Unmodify();
ReadQuery();
}
//---------------------------------------------------------------------
// CreateInitialIni
//Creates initial INI file when one doesn't already exist
void __fastcall TAdhocForm::CreateInitialIni()
{
//Load first SQL query text and add it to the combo box
char szQueryName[64];
LoadString((HINSTANCE)HInstance,
IDS_VeryInefficientName,
szQueryName,
sizeof(szQueryName));
HGLOBAL hSQLQuery = LoadResource((HINSTANCE)HInstance,
FindResource((HINSTANCE)HInstance,
MAKEINTRESOURCE(IDSQLQUERY_VeryInefficientQuery),
"SQLQUERY"));
char* pszSQLQuery = (char*)LockResource(hSQLQuery);
SavedQueries->WriteString(szQueryName, "Query", StrToIniStr(pszSQLQuery));
SavedQueries->WriteString(szQueryName, "Alias", "IBLOCAL");
SavedQueries->WriteString(szQueryName, "Name", "SYSDBA");
SavedQueryCombo->Items->Add(szQueryName);
//Load next SQL query text and add it to the combo box
LoadString((HINSTANCE)HInstance, IDS_AmountDueName, szQueryName, sizeof(szQueryName));
hSQLQuery = LoadResource((HINSTANCE)HInstance,
FindResource((HINSTANCE)HInstance,
MAKEINTRESOURCE(IDSQLQUERY_AmountDueByCustomer),
"SQLQUERY"));
pszSQLQuery = (char*)LockResource(hSQLQuery);
SavedQueries->WriteString(szQueryName, "Query", StrToIniStr(pszSQLQuery));
SavedQueries->WriteString(szQueryName, "Alias", "BCDEMOS");
SavedQueries->WriteString(szQueryName, "Name", "");
SavedQueryCombo->Items->Add(szQueryName);
}
//---------------------------------------------------------------------
void __fastcall TAdhocForm::ExecuteBtnClick(TObject *Sender)
{
BackgroundQuery(QueryName,
AliasCombo->Text,
NameEdit->Text,
PasswordEdit->Text,
QueryEdit->Text);
BringToFront();
}
//---------------------------------------------------------------------
String __fastcall TAdhocForm::UniqueName()
{
int I;
String result;
I = 1;
do
result.Format("Query%d", ARRAYOFCONST((I)));
while(SavedQueryCombo->Items->IndexOf(result) >= 0);
}
//---------------------------------------------------------------------
void __fastcall TAdhocForm::NewBtnClick(TObject *Sender)
{
AliasCombo->Text = "BCDEMOS";
NameEdit->Text = "";
PasswordEdit->Text = "";
QueryEdit->Text = "";
QueryEdit->SetFocus();
QueryName = UniqueName();
SavedQueryCombo->ItemIndex = -1;
Unnamed = true;
}
//---------------------------------------------------------------------
void __fastcall TAdhocForm::SaveBtnClick(TObject *Sender)
{
SaveQuery();
}
//---------------------------------------------------------------------
void __fastcall TAdhocForm::SaveAsBtnClick(TObject *Sender)
{
SaveQueryAs();
}
//---------------------------------------------------------------------
void __fastcall TAdhocForm::CloseBtnClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------
void __fastcall TAdhocForm::SavedQueryComboChange(TObject *Sender)
{
ReadQuery();
}
//---------------------------------------------------------------------