Icon View Incident Report

Serious Serious
Reported By: David Cornelius
Reported On: 11/17/2004
For: Version 4.14 Build 1
# 1903 LASTAUTOINC SQL Function Causes AV When Used in a Sub-SELECT INSERT Statement

I've got the following SQL that worked fine in 3.x, but causes an Access Violation in 4.14. The SELECT statement works fine on its own, and the INSERT INTO statement works fine if I replace the LastAutoInc('SamplesSent') with a hard-coded number.

INSERT INTO SamplesSentDetl
 SELECT LastAutoInc('SamplesSent'), ProdId, Product, PackType, ProdDesc,
Package, UnitSize, Unit, Price
 FROM AvailPrd WHERE ItemId = :ItemId

The definitions of the 3 tables used are listed below
for reference (minus the indexes):

CREATE TABLE IF NOT EXISTS "Availprd"
(
  "ItemId" AUTOINC,
  "ProdId" INTEGER,
  "Product" VARCHAR(30),
  "PackType" VARCHAR(30),
  "VendId" INTEGER,
  "CustId" INTEGER,
  "SalesId" INTEGER,
  "AddrId" INTEGER,
  "Date" DATE,
  "ProdDesc" VARCHAR(70),
  "Package" VARCHAR(15),
  "UnitSize" INTEGER,
  "Unit" VARCHAR(5),
  "Price" FLOAT,
  "Qty" INTEGER,
  "Wanted" SMALLINT,
  "Hot" SMALLINT,
  "Spot" BOOLEAN,
  "SampleSent" DATE,
  "ProductNotes" VARCHAR(200),
  "DateCreated" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ("ItemId") COMPRESS NONE
LOCALE CODE 0
USER MAJOR VERSION 1
);

CREATE TABLE IF NOT EXISTS "SamplesSent"
(
  "ItemId" AUTOINC NOT NULL,
  "DateRequested" DATE DEFAULT CURRENT_DATE,
  "SampleSent" DATE,
  "ProdId" INTEGER,
  "Product" VARCHAR(30),
  "PackType" VARCHAR(30),
  "VendId" INTEGER,
  "Vendor" VARCHAR(30),
  "CustId" INTEGER,
  "Customer" VARCHAR(30),
  "SalesId" INTEGER,
  "ProdDesc" VARCHAR(70),
  "Package" VARCHAR(6),
  "UnitSize" SMALLINT,
  "Unit" VARCHAR(5),
  "Price" MONEY,
  "Received" DATE,
  "ReceivedBy" VARCHAR(15),
  "PrintingNotes" MEMO,
  "InternalNotes" MEMO,
PRIMARY KEY ("ItemId") COMPRESS NONE
LOCALE CODE 0
USER MAJOR VERSION 1
);

CREATE TABLE IF NOT EXISTS "SamplesSentDetl"
(
  "ItemId" INTEGER NOT NULL,
  "ProdId" INTEGER NOT NULL,
  "Product" VARCHAR(30),
  "PackType" VARCHAR(30),
  "ProdDesc" VARCHAR(70),
  "Package" VARCHAR(15),
  "UnitSize" SMALLINT,
  "Unit" VARCHAR(5),
  "Price" MONEY,
PRIMARY KEY ("RecordID") COMPRESS NONE
LOCALE CODE 0
USER MAJOR VERSION 1
);



Comments Comments and Workarounds
The workaround is to use the TDBISAMTable.LastAutoIncValue property to get the last autoinc value for a table.


Resolution Resolution
Fixed Problem on 11/18/2004 in version 4.15 build 1
Image