comp.lang.ada
 help / color / mirror / Atom feed
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





  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