sancho1980
Technical User
Hello people I do have a problem with Delphi and databases so I didnt know whether to post this in the Delphi or the Database forum so I just decided to post it in both. I have defined a database in Access which has several tables (which are not all relevant for my question), anyway this is important: there is one table (dictionaryEntries) which is related to another table (synonyms). I have created this relation in Access directly with referential integrity; one dictionaryEntries record can therefore relate to several synonyms records. The relation is drawn between the primary key (recID) of my dictionaryEntries table and a field called entryID in the synonym table.
Now suppose I DO have an entry in my dictionaryEntries table with the primary key 1. If I now add a synonym to my synonyms table with the entryID field containing 1 (meaning that this synonym relates to record 1 of my dictionaryEntries table) I still get an EOIeEXCEPTION telling me that there must be a record in the dictionaryEntries table relating to the new record. Why does the database engine not realize that there is indeed already a record in my dictionaryEntries table with this primary key?? Does any of you have an idea?
Thanx Martin.
PS: Here is the insert function:
function TDM_Dictionary.InsertASSynonym(ASSynonym: TSynonym): Integer;
var
GenderPK: Integer;
begin
if dictionaryEntryExists(ASSynonym.entryID) then
if self.GetASSynonymPK(ASSynonym) = -1 then
begin
self.QRY_InsertASSynonym.SQL.Clear();
self.QRY_InsertASSynonym.SQL.Add(MakeInsertASSynonymSQL(ASSynonym));
if Length(ASSynonym.Gender) <> 0 then
begin
GenderPK := self.InsertGender(ASSynonym.Gender);
self.QRY_InsertASSynonym.Parameters.ParamByName('GEN').Value := GenderPK;
end;
self.QRY_InsertASSynonym.Parameters.ParamByName('SYN').Value := ASSynonym.Synonym;
self.QRY_InsertASSynonym.Parameters.ParamByName('ENTRYID').Value := ASSynonym.entryID;
if Length(ASSynonym.PRGM) <> 0 then
self.QRY_InsertASSynonym.Parameters.ParamByName('PRGM').Value := ASSynonym.PRGM;
self.QRY_InsertASSynonym.ExecSQL();
InsertASSynonym := self.GetASSynonymPK(ASSynonym);
end
else InsertASSynonym := self.GetASSynonymPK(ASSynonym)
else
InsertASSynonym := -1;
end;
Now suppose I DO have an entry in my dictionaryEntries table with the primary key 1. If I now add a synonym to my synonyms table with the entryID field containing 1 (meaning that this synonym relates to record 1 of my dictionaryEntries table) I still get an EOIeEXCEPTION telling me that there must be a record in the dictionaryEntries table relating to the new record. Why does the database engine not realize that there is indeed already a record in my dictionaryEntries table with this primary key?? Does any of you have an idea?
Thanx Martin.
PS: Here is the insert function:
function TDM_Dictionary.InsertASSynonym(ASSynonym: TSynonym): Integer;
var
GenderPK: Integer;
begin
if dictionaryEntryExists(ASSynonym.entryID) then
if self.GetASSynonymPK(ASSynonym) = -1 then
begin
self.QRY_InsertASSynonym.SQL.Clear();
self.QRY_InsertASSynonym.SQL.Add(MakeInsertASSynonymSQL(ASSynonym));
if Length(ASSynonym.Gender) <> 0 then
begin
GenderPK := self.InsertGender(ASSynonym.Gender);
self.QRY_InsertASSynonym.Parameters.ParamByName('GEN').Value := GenderPK;
end;
self.QRY_InsertASSynonym.Parameters.ParamByName('SYN').Value := ASSynonym.Synonym;
self.QRY_InsertASSynonym.Parameters.ParamByName('ENTRYID').Value := ASSynonym.entryID;
if Length(ASSynonym.PRGM) <> 0 then
self.QRY_InsertASSynonym.Parameters.ParamByName('PRGM').Value := ASSynonym.PRGM;
self.QRY_InsertASSynonym.ExecSQL();
InsertASSynonym := self.GetASSynonymPK(ASSynonym);
end
else InsertASSynonym := self.GetASSynonymPK(ASSynonym)
else
InsertASSynonym := -1;
end;