Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Creating a MSACCESS database (try # 3)

13 views
Skip to first unread message

Jay

unread,
May 18, 2006, 9:47:08 PM5/18/06
to

I have posted this elsewhere, but with no luck so far. Maybe someone here can help me.

I am using C++ builder 6 and am trying to create an Access
database using the database explorer. After creating the
database Alias (named POSDB in this case) I am asked to login
using a user name and password whenever I try to open the
database within the explorer.

Two Questions:
1) What exactly am I doing wrong, how do I 'login'.

2) I am very new to using databases and am trying to make a
program that will use a database with my specifications. Is
there any place where I can find a few tutorials on how to
create this type of program from scratch?

Any help is greatly appreciated.
Thanks.

JP

unread,
May 21, 2006, 10:54:48 PM5/21/06
to

"Jay" <arg...@comcast.net> wrote in message
news:446d239c$1...@newsgroups.borland.com...

>
> I have posted this elsewhere, but with no luck so far. Maybe someone
> here can help me.
>
> I am using C++ builder 6 and am trying to create an Access
> database using the database explorer. After creating the

I don't know if it will work with the personal version but with the
Professional and Enterprise versions you can place an ADO Connection on your
form. In the properties of the ADO Connection set the login prompt to false
so that the login dialog never comes up. Double click on the ADO Connection
and build the string for the connection. Check the blank password and it
should work fine for you. You can also set the password and then supply it
when you are making your connection.


> database Alias (named POSDB in this case) I am asked to login
> using a user name and password whenever I try to open the
> database within the explorer.
>
> Two Questions:
> 1) What exactly am I doing wrong, how do I 'login'.
>
> 2) I am very new to using databases and am trying to make a
> program that will use a database with my specifications. Is
> there any place where I can find a few tutorials on how to
> create this type of program from scratch?

A book that I found very helpful is SAMS "Borland C++ Builder 6 Developer's
Guide" ISBN 0-672-32480-6. You may be able to find it at
www.samspublishing.com


>
> Any help is greatly appreciated.
> Thanks.
>

Hope this helps you out

JP


poojo hackma

unread,
May 22, 2006, 11:29:11 AM5/22/06
to
Jay,

Here is something that I wrote a while ago. You could print it out and
reference it, if you'd like.

// in the header, among other things, you will need:
#include <comobj.hpp>
#include <ADODB.hpp>
#include <ADOX_tlb.h>

// in the main form, here are some of the routines I used. Obviously, your
database will be populated differently, but you can still use it as a great
example:
//---------------------------------------------------------------------------
void __fastcall TfrmCan1::FormCreate(TObject *Sender) {
AnsiString ExeFile;
AnsiString ExeFilePath;
ExeFilePath = ExtractFilePath(Application->ExeName);
ExeFile = CreateDB( ExeFilePath.c_str() );
ADOConnection1->ConnectionString = ConnStrBldr(ExeFile.c_str());
if (hasTable == false)
BuildTable("SPNs");
Initialize();
}
//---------------------------------------------------------------------------
int TfrmCan1::Initialize() {
int retVal = 0;
spn = 0;
bDataChanged = false;
ddlSPN->ItemIndex = 0;
lblSpnNewBits->Caption = "";
lblSpnNewValue->Caption = "";
lblMSB->Caption = "";
lblLSB->Caption = "";
lblPgn->Caption = "";
strcpy(Unit[enmKpa], "kPa");
strcpy(Unit[enmPct], "%");
strcpy(Unit[enmCel], "deg C");
strcpy(Unit[enmMpa], "Mpa");
strcpy(Unit[enmVts], "V");
strcpy(Unit[enmLph], "L/h");
strcpy(Unit[enmRpm], "rpm");
strcpy(Unit[enmSec], "s");
strcpy(Unit[enmDeg], "deg");
strcpy(Unit[enmKMh], "km/h");
strcpy(Unit[enmAmp], "A");
strcpy(Unit[enmKGh], "kg/h");
strcpy(Unit[enmAci], "ASCII");
strcpy(Unit[enmLtr], "L");
strcpy(Unit[enmKg], "kg");
strcpy(Unit[enmKMg], "km/kg");
strcpy(Unit[enmHrs], "h");
strcpy(Unit[enmRev], "r");
strcpy(Unit[enmGer], "gear");
strcpy(Unit[enmRto], "ratio");
strcpy(Unit[enmNm], "Nm");
strcpy(Unit[enmStp], "steps");
AnsiString Desc;
try { // read in the database
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT * FROM SPNs");
ADOQuery1->Open();
while (ADOQuery1->Eof == false) {
spn = ADOQuery1->FieldValues["SPN"];
spd[spn].min = ADOQuery1->FieldValues["Min"];
spd[spn].ofs = ADOQuery1->FieldValues["Ofs"];
if (spd[spn].ofs == spd[spn].min) {
spd[spn].min -= spd[spn].ofs; // minus a negative is addition
spd[spn].self = spn;
Desc.printf("%5d", spn);
ddlSPN->Items->Add(Desc);
spd[spn].max = ADOQuery1->FieldValues["Max"] - spd[spn].ofs;
spd[spn].val = ADOQuery1->FieldValues["Val"] - spd[spn].ofs;
spd[spn].len = ADOQuery1->FieldValues["Len"];
spd[spn].res = ADOQuery1->FieldValues["Res"];
spd[spn].PGN = ADOQuery1->FieldValues["PGN"];
spd[spn].bit = ADOQuery1->FieldValues["start"];
Desc = ADOQuery1->FieldValues["Desc"];
strcpy(spd[spn].desc, Desc.c_str());
Desc = ADOQuery1->FieldValues["Unit"];
if (strcmp(Desc.c_str(), Unit[enmKpa]) == 0)
spd[spn].pUnit = Unit[enmKpa];
else if (strcmp(Desc.c_str(), Unit[enmPct]) == 0)
spd[spn].pUnit = Unit[enmPct];
else if (strcmp(Desc.c_str(), Unit[enmCel]) == 0)
spd[spn].pUnit = Unit[enmCel];
else if (strcmp(Desc.c_str(), Unit[enmMpa]) == 0)
spd[spn].pUnit = Unit[enmMpa];
else if (strcmp(Desc.c_str(), Unit[enmVts]) == 0)
spd[spn].pUnit = Unit[enmVts];
else if (strcmp(Desc.c_str(), Unit[enmLph]) == 0)
spd[spn].pUnit = Unit[enmLph];
else if (strcmp(Desc.c_str(), Unit[enmRpm]) == 0)
spd[spn].pUnit = Unit[enmRpm];
else if (strcmp(Desc.c_str(), Unit[enmSec]) == 0)
spd[spn].pUnit = Unit[enmSec];
else if (strcmp(Desc.c_str(), Unit[enmDeg]) == 0)
spd[spn].pUnit = Unit[enmDeg];
else if (strcmp(Desc.c_str(), Unit[enmKMh]) == 0)
spd[spn].pUnit = Unit[enmKMh];
else if (strcmp(Desc.c_str(), Unit[enmAmp]) == 0)
spd[spn].pUnit = Unit[enmAmp];
else if (strcmp(Desc.c_str(), Unit[enmKGh]) == 0)
spd[spn].pUnit = Unit[enmKGh];
else if (strcmp(Desc.c_str(), Unit[enmAci]) == 0)
spd[spn].pUnit = Unit[enmAci];
else if (strcmp(Desc.c_str(), Unit[enmLtr]) == 0)
spd[spn].pUnit = Unit[enmLtr];
else if (strcmp(Desc.c_str(), Unit[enmKg]) == 0)
spd[spn].pUnit = Unit[enmKg];
else if (strcmp(Desc.c_str(), Unit[enmKMg]) == 0)
spd[spn].pUnit = Unit[enmKMg];
else if (strcmp(Desc.c_str(), Unit[enmHrs]) == 0)
spd[spn].pUnit = Unit[enmHrs];
else if (strcmp(Desc.c_str(), Unit[enmRev]) == 0)
spd[spn].pUnit = Unit[enmRev];
else if (strcmp(Desc.c_str(), Unit[enmGer]) == 0)
spd[spn].pUnit = Unit[enmGer];
else if (strcmp(Desc.c_str(), Unit[enmRto]) == 0)
spd[spn].pUnit = Unit[enmRto];
else if (strcmp(Desc.c_str(), Unit[enmNm]) == 0)
spd[spn].pUnit = Unit[enmNm];
else if (strcmp(Desc.c_str(), Unit[enmStp]) == 0)
spd[spn].pUnit = Unit[enmStp];
spd[spn].xER = int(MaxInt / spd[spn].max);
spd[spn].max *= spd[spn].xER;
spd[spn].bvl = int((spd[spn].val / spd[spn].res) + 0.5);
spd[spn].val *= spd[spn].xER;
} else {
Desc.printf("SPN%d: Offset not equal to Minimum.\n\n", spn);
Desc += "This situation was not covered in SAE J1939-71;\n";
Desc += "therefore, this value will not be loaded.";
MessageBox(NULL, Desc.c_str(), "Data Corrupt", MBOKINFO);
}
ADOQuery1->Next();
}
ADOQuery1->Close();
ddlSPN->Items->Add("Add New");
} catch (Exception* ex) {
MessageBox(NULL, ex->Message.c_str(), "Query Exception", MBOKEROR);
retVal = 1;
}
return retVal;
}
//---------------------------------------------------------------------------
char* TfrmCan1::CreateDB(char* pDir) {
char cFile[MAXPATH];
strcat(strcpy(cFile, pDir), "j1939.mdb"); // replace with your DB file
OpenDialog1->InitialDir = pDir;
OpenDialog1->FileName = cFile;
if (FileExists(OpenDialog1->FileName) == false) {
OpenDialog1->Execute();
}
if (FileExists(OpenDialog1->FileName) == false) {
AnsiString str1;
str1 = ConnStrBldr(OpenDialog1->FileName.c_str());
WideString strConn = str1;
Adox_tlb::TCOM_Catalog cat = CoCatalog::Create(); // creates Access DB
try { // release
try { // create the database
cat->Create(strConn.c_bstr());
} catch (Exception* ex) {
str1.printf("The following error was encountered while trying to\n"
"create the database:\n\n%s", ex->Message.c_str());
MessageBox(NULL, str1.c_str(), "DB Creation", MBOKEROR);
}
} __finally {
cat.Release();
hasTable = false;
}
}
return OpenDialog1->FileName.c_str();
}
//---------------------------------------------------------------------------
int TfrmCan1::BuildTable(char* pTable) {
int retVal = 0;
try { // closes the database
try { // create the database
sqlCreateTable.printf("CREATE TABLE %s ("
" [SPN] INTEGER CONSTRAINT PK_spn PRIMARY KEY,"
" [Desc] TEXT(50), [Len] INTEGER, [Res] DOUBLE, "
" [Val] DOUBLE, [Ofs] DOUBLE, [Min] DOUBLE,"
" [Max] DOUBLE, [Unit] TEXT(10), [Type] TEXT(50),"
" [Sus] INTEGER, [PGN] LONG, [start] INTEGER)", pTable);
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sqlCreateTable);
ADOQuery1->ExecSQL();
sqlInsertParams = "INSERT INTO [SPNs] ("
"[SPN], [Desc], [Len], [Res], [Val], [Ofs], [Min], "
"[Max], [Unit], [Type], [Sus], [PGN], [start]) VALUES
";
sqlInsertData = "(22,'Extended Crankcase Blow-by
Pressure',8,0.05,6.95,0.00,0.00,"
"12.50,'kPa','Measured',22,65263,8)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(92,'Percent Load At Current
Speed',8,1.00,100,0.00,0.00,"
"250.00,'%','Status',92,61443,16)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(94,'Fuel Delivery
Pressure',8,4.00,299.15625,0.00,0.00,"
"1000.00,'kPa','Measured',94,65263,0)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(98,'Engine Oil Level',8,0.40,90,0.00,0.00,"
"100.00,'%','Measured',98,65263,16)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(99,'Engine Oil Filter Differential
Pressure',8,0.50,25,0.00,0.00,"
"125.00,'kPa','Measured',99,65276,24)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(100,'Engine Oil Pressure',8,4.00,496,0.00,0.00,"
"1000.00,'kPa','Measured',100,65263,24)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(101,'Crankcase
Pressure',16,0.0078125,1,-250.00,-250.00,"
"251.99,'kPa','Measured',101,65263,32)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(102,'Boost Pressure',8,2.00,86,0.00,0.00,"
"500.00,'kPa','Measured',102,65270,8)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(105,'Intake Manifold 1
Temperature',8,1.00,86,-40.00,-40.00,"
"210.00,'deg C','Measured',105,65270,16)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(108,'Barometric Pressure',8,0.50,12.5,0.00,0.00,"
"125.00,'kPa','Measured',108,65269,0)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(109,'Coolant Pressure',8,2.00,250,0.00,0.00,"
"500.00,'kPa','Measured',109,65263,48)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(110,'Engine Coolant
Temperature',8,1.00,85,-40.00,-40.00,"
"210.00,'deg C','Measured',110,65262,0)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(111,'Coolant Level',8,0.40,90,0.00,0.00,"
"100.00,'%','Measured',111,65263,56)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(144,'Trailer, Tag Or Push Channel Tire
Pressure',16,0.50,9680,0.00,0.00,"
"32127.50,'kPa','Measured',144,65146,0)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(157,'Injector Metering Rail 1
Pressure',16,0.00390625,31.60156,0.00,0.00,"
"251.00,'Mpa','Measured',157,65243,16)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(158,'Battery Potential (Voltage),
Switched',16,0.05,24.3,0.00,0.00,"
"3213.00,'V','Measured',158,65271,48)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(171,'Ambient Air
Temperature',16,0.03125,69,-273.00,-273.00,"
"1735.00,'deg C','Measured',171,65269,24)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(174,'Fuel Temperature',8,1.00,33,-40.00,-40.00,"
"210.00,'deg C','Measured',174,65262,8)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(175,'Engine Oil Temperature
1',16,0.03125,267.625,-273.00,-273.00,"
"1735.00,'deg C','Measured',175,65262,16)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(183,'Fuel Rate',16,0.05,401.60,0.00,0.00,"
"3212.75,'L/h','Measured',183,65266,0)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(190,'Engine Speed',16,0.125,3192.00,0.00,0.00,"
"8031.87,'rpm','Measured',190,61444,24)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(513,'Actual Engine - Percent
Torque',8,1.00,10.67939,-125.00,-125.00,"
"125.00,'%','Measured',513,61444,16)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(1129,'Turbocharger 3 Boost
Pressure',16,0.125,514.75,0.00,0.00,"
"8032.00,'kPa','Measured',1129,65190,32)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(1131,'Intake Manifold 2
Temperature',8,1.00,83.9313,-40.00,-40.00,"
"210.00,'deg C','Measured',1131,65189,0)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(1132,'Intake Manifold 3
Temperature',8,1.00,107.41985,-40.00,-40.00,"
"210.00,'deg C','Measured',1132,65189,8)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(1133,'Intake Manifold 4
Temperature',8,1.00,109.57252,-40.00,-40.00,"
"210.00,'deg C','Measured',1132,65189,16)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(1137,'Exhaust Gas Port 1
Temperature',16,0.03125,936.9375,-273.00,-273.00,"
"1735.00,'deg C','Measured',1137,65187,0)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(1138,'Exhaust Gas Port 2
Temperature',16,0.03,919.8125,-273.00,-273.00,"
"1735.00,'deg C','Measured',1138,65187,16)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(1139,'Exhaust Gas Port 3
Temperature',16,0.03125,945.50,-273.00,-273.00,"
"1735.00,'deg C','Measured',1139,65187,32)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(1140,'Exhaust Gas Port 4
Temperature',16,0.03125,928.375,-273.00,-273.00,"
"1735.00,'deg C','Measured',1140,65187,48)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(1141,'Exhaust Gas Port 5
Temperature',16,0.03125,919.8125,-273.00,-273.00,"
"1735.00,'deg C','Measured',1141,65186,0)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(1142,'Exhaust Gas Port 6
Temperature',16,0.03125,928.3775,-273.00,-273.00,"
"1735.00,'deg C','Measured',1142,65186,16)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(1143,'Exhaust Gas Port 7
Temperature',16,0.03125,936.9375,-273.00,-273.00,"
"1735.00,'deg C','Measured',1143,65186,32)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(1144,'Exhaust Gas Port 8
Temperature',16,0.03125,928.375,-273.00,-273.00,"
"1735.00,'deg C','Measured',1144,65186,48)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(1145,'Exhaust Gas Port 9
Temperature',16,0.03125,928.375,-273.00,-273.00,"
"1735.00,'deg C','Measured',1145,65185,0)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(1146,'Exhaust Gas Port 10
Temperature',16,0.03125,919.8125,-273.00,-273.00,"
"1735.00,'deg C','Measured',1146,65185,16)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(1147,'Exhaust Gas Port 11
Temperature',16,0.03125,936.9375,-273.00,-273.00,"
"1735.00,'deg C','Measured',1147,65185,32)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(1148,'Exhaust Gas Port 12
Temperature',16,0.03125,936.9375,-273.00,-273.00,"
"1735.00,'deg C','Measured',1148,65185,48)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(1173,'Turbocharger 2 Compressor Inlet
Temperature',16,0.03125,87.4375,-273.00,-273.00,"
"1735.00,'deg C','Measured',1173,65178,8)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
sqlInsertData = "(1349,'Injector Metering Rail 2
Pressure',16,0.00390625,13.8615,0.00,0.00,"
"251.00,'Mpa','Measured',1349,65243,48)";
ADOCommand1->CommandText = sqlInsertParams + sqlInsertData;
ADOCommand1->Execute();
} catch (Exception* ex) {
MessageBox(NULL, ex->Message.c_str(), "DB Create Table", MBOKEROR);
retVal = 1;
}
} __finally {
ADOConnection1->Close();
}
return retVal;
}
//---------------------------------------------------------------------------
char* TfrmCan1::ConnStrBldr(char* pDbFileName) {
char loc[500];
strcat(strcpy(loc, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="),
pDbFileName);
return &loc[0];
}
//---------------------------------------------------------------------------


0 new messages