From: "Anders Wirzenius" <anders.wirzenius@pp.qnet.fi>
Subject: Re: Microsoft Access database on GNAT 3.04
Date: Wed, 07 Mar 2001 06:31:25 GMT
Date: 2001-03-07T06:31:25+00:00 [thread overview]
Message-ID: <1Bkp6.5$Sz3.1480@read2.inet.fi> (raw)
In-Reply-To: 982ogg$64t$1@tribune.oar.net
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 4255 bytes --]
WJT wrote in message <982ogg$64t$1@tribune.oar.net>...
...
>A small example of connecting to an Access database, and loading up a
>Dataset with a SQL select statement would get me going.
...
The following code is a result of modifying examples in the Samples
directories in GNATCOM-1.3p for WinNT. Remove the HTML tags where they
appear. The SQL is made using MS Access query builder, hence the unnecessary
complexity of the SQL-command.
Makefile:
gnatmake -IC:\gnatcom-1.3p\binding -IC:\gnatcom-1.3p\samples\bindings -IC:\g
natcom-1.3p\samples %1 -largs -lodbc32
Ada code:
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
with GNAT.IO; use GNAT.IO;
with GNATCOM.Types;
with GNATCOM.BSTR; use GNATCOM.BSTR;
with GNATCOM.VARIANT; use GNATCOM.VARIANT;
with GNATCOM.Initialize;
with ADO.uConnection_Interface; use ADO.uConnection_Interface;
with ADO.uCommand_Interface; use ADO.uCommand_Interface;
with ADO.uRecordset_Interface; use ADO.uRecordset_Interface;
with ADO.Fields_Interface; use ADO.Fields_Interface;
with ADO.Field_Interface; use ADO.Field_Interface;
procedure Botnia is
use type GNATCOM.Types.VARIANT_BOOL;
Connection : uConnection_Type;
Command : uCommand_Type;
Recordset : uRecordset_Type;
SQL : Constant
GNATCOM.Types.BSTR := To_BSTR (
"SELECT Botniahalli.Botniahalli_Viite,
Botniahalli.P�iv�m��r�, " &
"Botniahalli.Alkaa, Botniahalli.Loppuu,
Joukkueet.Joukkuenumero, " &
"Botniahalli.Joukkue, Joukkueet.Joukkuenimi, " &
"((Hour([Loppuu])-Hour([Alkaa]))*60+Minute([Loppuu])-Minute([Alkaa]))/30 " &
"AS Vuoroja, " &
"Int(((Hour([Loppuu])-Hour([Alkaa]))*60+Minute([Loppuu])-Minute([Alkaa]))/30
*[Hinta]+0.5) " &
"AS Vuokra, KenttaVuokrat.KenttaNimi,
Botniahalli.Botniahalli_Viite " &
"FROM (Botniahalli INNER JOIN Joukkueet ON " &
"Botniahalli.Joukkue = Joukkueet.Joukkuekoodi) " &
"INNER JOIN KenttaVuokrat ON " &
"Botniahalli.Kentt� = KenttaVuokrat.KenttaKoodi " &
"WHERE (((Botniahalli.Botniahalli_Viite) Is Not Null)
AND " &
"((Joukkueet.Joukkuenumero)=144 Or
(Joukkueet.Joukkuenumero)=152 Or " &
"(Joukkueet.Joukkuenumero)=172))");
begin
GNATCOM.Initialize.Initialize_COM;
Put_Line ("Content-type: text/html" );
New_Line;
Put_Line("<html><head><title>Anders</title>");
Put_Line("</head><body>");
Put_Line ("<B>Create ADO Engine</B><BR>");
Create (Connection, ADO.CLSID_Connection);
Put_Line ("ADO Version is : <B>" & To_Ada (Get_Version (Connection)));
New_Line;
Put_Line ("</B>Open Connection to Database<BR>");
Put_ConnectionString
(Connection,
To_BSTR ("DSN=adademo") );
Open (Connection, null, null, null, 0);
Create (Command, ADO.CLSID_Command);
PutRef_ActiveConnection (Command, Pointer (Connection));
Put_CommandText (Command, SQL);
Create (Recordset, ADO.CLSID_Recordset);
Open (Recordset,
Source => To_VARIANT_From_Dispinterface (Command),
CursorType => ADO.AdOpenForwardOnly,
LockType => ADO.AdLockReadOnly,
Options => 0,
Free => False);
MoveFirst (Recordset);
while Get_EOF (Recordset) /= GNATCOM.Types.VARIANT_BOOL_TRUE loop
declare
Fields : Fields_Type;
begin
Attach (Fields, Get_Fields (Recordset));
Put_Line ( "<P>" );
for N in 0 .. Integer (Get_Count (Fields)) - 1 loop
declare
Field : Field_Type;
begin
Attach (Field, Get_Item (Fields, To_VARIANT (N)));
Put_Line (To_Ada (Get_Name (Field)) & " = <B>" &
To_Ada (Get_Value (Field)) & "</B><BR>");
end;
end loop;
end;
MoveNext (Recordset);
New_Line;
end loop;
Put_Line ("Close Connections");
Put_Line("</body>");
Close (Recordset);
Close (Connection);
end Botnia;
Another binding using ODBC you may find at Pascal Obry's home page
http://perso.wanadoo.fr/pascal.obry/adas.html
Hope this helps.
Anders
next prev parent reply other threads:[~2001-03-07 6:31 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <2gqo6.8730$925.800172@news6-win.server.ntlworld.com>
2001-03-04 12:59 ` Microsoft Access database on GNAT 3.04 David C. Hoos, Sr.
2001-03-04 14:05 ` Rohit Sharma
2001-03-04 18:36 ` Gerhard Häring
2001-03-05 9:55 ` Tarjei T. Jensen
2001-03-06 13:26 ` WJT
2001-03-07 6:31 ` Anders Wirzenius [this message]
2001-03-07 14:24 ` rohit.sharma
2001-03-08 6:03 ` Gerhard Häring
2001-03-09 5:32 ` DuckE
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox