[prev in list] [next in list] [prev in thread] [next in thread]
List: mysql-win32
Subject: Re: Delphi and mySQL
From: "Fredrick Bartlett" <palmtreefrb () earthlink ! net>
Date: 2004-07-28 15:21:31
Message-ID: 001d01c474b6$8ffa1e20$3c526e45 () REGITLAP
[Download RAW message or body]
Yeah, doesn't make sense but you have to...
select Field1 from customers where Field1= last_insert_id()
Where Field1 is your auto_increment field.
Fredrick
----- Original Message -----
From: <ian_t_howarth@tiscali.co.uk>
To: <win32@lists.mysql.com>
Sent: Wednesday, July 28, 2004 2:35 AM
Subject: Delphi and mySQL
Anyone else out there use mySQL and Delphi?
I am using Delphi 5 with mySQL 4.1.2 server and ODBC 3.51 clients. I am
performing insertions, using a TQuery component, into a table with an
auto_increment
primary key. (Table & sample source at end of this message)
When I run the following queries I do not get a result back to identify
the server allocated auto_incremented field.
1.
INSERT INTO customers
SET Status=1, Surname="Howarth", Forename="Ian", Title="Mr",
BuildingName="", BuildingNo="12", Road="A Road", Town="Atown",
County="Acounty", PostCode="PC0 0ES";
2.
SELECT Last_Insert_ID();
No exception is raised when the 2nd query is executed.
I have also tried SELECT Last_Insert_ID(ID); but get the error "Invalid
field name. Unknown column "ID" in field list." even tho the auto_increment
field is actually called ID! I changed the field name from Ref to ID just
in case it was a special name, but neither name works.
Any ideas? Could it be a problem with the client drivers? I can't seem
to find a later one than 3.51 available. PLEASE help. This problem has
been driving me insane!
Additional details follow:
--------------------------
CREATE TABLE `customers` (
`ID` int(11) AUTO_INCREMENT,
`Status` tinyint(4) default NULL,
`Surname` varchar(30) default '',
`Forename` varchar(30) default '',
`Title` varchar(10) default '',
`BuildingName` varchar(30) default '',
`BuildingNo` varchar(10) default '',
`Road` varchar(30) default '',
`Area` varchar(30) default '',
`Town` varchar(30) default '',
`County` varchar(30) default '',
`PostCode` varchar(10) default '',
`HomeNo` varchar(20) default '',
`MobileNo` varchar(20) default '',
`WorkNo` varchar(20) default '',
`EMailAddrs` varchar(100) default '',
`DOB` date default '0000-00-00',
`DOD` date default '0000-00-00 00:00:00',
`NINo` varchar(13) default '',
`PassportNo` varchar(20) default '',
`UnAvailStart` date default '0000-00-00 00:00:00',
`UnAvailEnd` date default '0000-00-00 00:00:00',
`UnavailReason` varchar(128) default NULL,
`Notes` text,
`Created` datetime default '0000-00-00 00:00:00',
`CreatedBy` varchar(20) default '',
`Updated` datetime default '0000-00-00 00:00:00',
`UpdatedBy` varchar(20) default '',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Code (DELPHI):
--------------
// Form contains a TQuery, TDatabase, TDataSource, TMemo and
// TDBGrid components. The DBGrid is linked to the TQuery and
// is just to allow me to see the result set from the
// SELECT last_insert_id() query.
procedure TForm1.Button1Cick(Sender: TObject);
begin
Query1.SQL.Text:=Memo1.Lines.Text;
Query1.Prepare;
Query1.ExecSQL;
Query1.SQL.Text:='SELECT Last_Insert_ID();';
Query1.Prepare;
Query1.ExecSQL;
If Query1.IsEmpty Then
ShowMessage('No result.')
Else
ShowMessage(Query1.Fields[0].AsString);
end;
__________________________________________________
Broadband from an unbeatable £15.99!
http://www.tiscali.co.uk/products/broadband/home.html?code=SM-NL-11AM
--
MySQL Windows Mailing List
For list archives: http://lists.mysql.com/win32
To unsubscribe:
http://lists.mysql.com/win32?unsub=palmtreeFRB@earthlink.net
--
MySQL Windows Mailing List
For list archives: http://lists.mysql.com/win32
To unsubscribe: http://lists.mysql.com/win32?unsub=mysql-win32@progressive-comp.com
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic