Készítettem egy Access 2003 adatbázist. Az első mező dátum/idő, a második egy autoincrement mező kellene, hogy legyen (a neve 'ID'). Az adatbázist Access 2010-ben hoztam létre, ott végzem el a módosításokat. Tehát nem a felhasználói programomból akarom létrehozni. A programomból csak beírni fogok. (Ez egy mezei adatgyűjtő alkalmazás.) A következőket találtam a neten:
www.cubrid.org/wiki_tutorials/entry/how-to-insert-data-into-tables-with-auto_increment-columns
stackoverflow.com/questions/12609621/insert-an-auto-incremented-primary-key-into-an-access-table
A problémám az, hogy amikor a Lazarus programból be akarom írni a következő sort, akkor egyszerűen nem hajlandó az ID mezőt írni! A mező típusa: számláló. Mérete: hosszú egész, új érték: Növekvő, Indexelt: igen (nem lehet azonos). Próbáltam ezt a mezőt elsődleges kulcsnak beállítani és próbáltam úgy is, hogy nem elsődleges kulcs. A második linken lévő cikk azt mondja, hogy az adattípust "AutoNumber"-re kell állítani. Én ilyet nem találok a magyar nyelvű Access-ben. (Lehet, hogy ezt nem veszem észre???)
A programomban így írok (írnék) ki egy sort az adatbázisba (részlet):
SQLQuery.SQL.Text:=SQLQuery.SQL.Text + 'values (:dt1,:id ,:m159,:m160);';
SQLQuery.ParamByName('dt1').AsDateTime := dtBufStartDateTimeArray[iI];
SQLQuery.ParamByName('id').AsLargeInt := 0; *
SQLQuery.ParamByName('m159').AsFloat := Conv_0_1_UnSigned(bBufMSBRec_2Array[iI,318],bBufMSBRec_2Array[iI,319]); { MSB DM 6159 }
SQLQuery.ParamByName('m160').AsFloat := Conv_0_1_UnSigned(bBufMSBRec_2Array[iI,320],bBufMSBRec_2Array[iI,321]); { MSB DM 6160 }
*: Próbáltam úgy is, hogy az ':id' helyett NULL-t adok meg.
Az eredmény mindig valamilyen hibaüzenet. Hol van a kutya elásva?
(Mielőtt bele akartam volna applikálni az adatbázisba ezt az azonosító mezőt, az adatbázisba mentés működött, tehát a program többi része valószínűleg megfelelően működik.)