When trying to save a SQLite file, the app generates a error. The dialog says “Record was not updated,” and the message says that, “An error (Unsupported File Driver Function (80) was experienced when making changes to the xxx file.”
First time using the SQLite files and have no clue what this means/what I should be checking.
Like does “save a SQLite file” mean are you in a Browse that opened a record in a Form and you pushed OK button? Post your FILE declaration. Did your Create the file using SQL code or did you let a Clarion CREATE() do it.
IMO the SQLite driver is generally poor in typical App use, like it feels unfinished.
There’s a Clarion Live where we remade the Invoice example using SQLite. I tried creating a duplicate key and the error returned by the driver was not the right one, it was some nonsense.
The error “Unsupported File Driver Function (80)” is a Clarion development environment error code indicating that the file driver has detected a data structure or file access statement that it cannot process. When attempting to save an SQLite database table in Clarion, this specifically happens because the SQLite file driver encounters a schema mismatch—most commonly a column set as an identity/auto-increment but configured as a string data type, or an unmapped primary key configuration. [1]
Why This Happens
String Auto-Increments: You have checked IsIdentity or AutoIncrement on a column that is mapped to a string data type (CSTRING, STRING) instead of a valid integer type (LONG).
Missing or Mismatched PK: The SQLite backend table requires an integer primary key for auto-increment functionality, but your Clarion dictionary (.DCT) does not match the underlying database constraints.
Unsupported Statements: The template code is trying to issue a backend statement format that the SQLite driver doesn’t support. [1, 2, 3]
How to Fix It
Check Column Identity Settings
Review your Clarion data dictionary (.DCT) for the SQLite table:
Ensure that any column marked as an Identity Column or Auto-Increment is explicitly a LONG (or matching 4-byte/8-byte integer) data type.
If a text/string column needs a unique identifier, uncheck the IsIdentity attribute and handle the string generation manually in your code.
Match the SQLite Native Schema
SQLite naturally handles auto-increment using a specific column syntax. Ensure your underlying table was created natively as:
In Clarion, map this id field exactly as a LONG with the auto-increment property enabled.
Verify Driver String Configurations
If you are passing options through the driver string option parameter (in the table properties), verify your syntax. Passing unparsed or poorly formatted parameters can trigger an Error 80 statement failure. [1]
The short answer is that not all drivers support all file driver commands. For example the DOS driver doesn’t support KEY commands and so on.
The commands supported by the shipping SQL drivers are also limited (and covered in the docs). If you call an unsupported function, you get this error.
Of course it’s also possible to be getting the wrong error - the Sqlite driver has its share of bugs.
This has fewer bugs, is faster, more secure and supports far more of the file driver commands (not to mention adding more commands.) Frankly, if you’re going to use SQLite is a no-brainer.
SQLite2 is an “actual file driver” so all existing code just works.
My guess is that you have not declared a primary key for the file/table. You have asked the driver to update the row it has and it wants to create an update statement like this:
update yourfile set =
where yourfile_ID =
but since you have not declared a primary key, it can’t.