[fixed] BUG: Build 506 - mAirListDB - double click on Artist

WOW! Support for multiple artists per item!!!

I have recreate the Database. After a double click on Artist I get the following message

SQL Error: SQL logic error or missing database

Montag, 17. November 2008, 22:00:42

Program Version 3.0.0 Build 506

Call stack:

[008D4D2E] ZDbcSqLiteUtils.CheckSQLiteError (Line 229, “ZDbcSqLiteUtils.pas” + 14) + $3D
[008E7EB0] ZDbcSqLiteStatement.TZSQLiteStatement.ExecuteQuery (Line 175, “ZDbcSqLiteStatement.pas” + 6) + $12
[008B10C5] ZDbcStatement.TZEmulatedPreparedStatement.ExecuteQuery (Line 1984, “ZDbcStatement.pas” + 1) + $16
[008B11E9] ZDbcStatement.TZEmulatedPreparedStatement.ExecuteQueryPrepared (Line 2025, “ZDbcStatement.pas” + 1) + $19
[0097F8CE] DBBrowserTreeView.TDBBrowserTreeView.DoExpanding (Line 294, “DBBrowserTreeView.pas” + 93) + $E
[0050938D] VirtualTrees.TBaseVirtualTree.ToggleNode (Line 28319, “VirtualTrees.pas” + 69) + $8
[004F5096] VirtualTrees.TBaseVirtualTree.DetermineHitPositionLTR (Line 17502, “VirtualTrees.pas” + 76) + $12
[005034B9] VirtualTrees.TBaseVirtualTree.GetHitTestInfoAt (Line 24811, “VirtualTrees.pas” + 91) + $13
[004FB014] VirtualTrees.TBaseVirtualTree.HandleMouseDblClick (Line 20432, “VirtualTrees.pas” + 38) + $8
[004F276F] VirtualTrees.TBaseVirtualTree.WMLButtonDblClk (Line 16119, “VirtualTrees.pas” + 5) + $B
[004732EB] Controls.TControl.WndProc + $2BB
[004E816B] VirtualTrees.TVTHeader.HandleMessage (Line 10656, “VirtualTrees.pas” + 278) + $8
[0042F814] Classes.StdWndProc + $14
[0047714D] Controls.TWinControl.WndProc + $499
[00423D68] Classes.TThreadList.UnlockList + $4
[00476C60] Controls.TWinControl.IsControlMouseMsg + $60
[0047714D] Controls.TWinControl.WndProc + $499
[00500722] VirtualTrees.TBaseVirtualTree.WndProc (Line 23061, “VirtualTrees.pas” + 32) + $6
[004768D8] Controls.TWinControl.MainWndProc + $2C
[0042F814] Classes.StdWndProc + $14
[0046E662] Controls.FindControl + $42
[00490920] Forms.TApplication.ProcessMessage + $FC
[0049095A] Forms.TApplication.HandleMessage + $A
[00490B7A] Forms.TApplication.Run + $96
[0098E731] mAirListDBMainWindows.TDBMainWindowClass.Run (Line 104, “mAirListDBMainWindows.pas” + 69) + $7
[0098E7CC] mAirListDBMainWindows.TDBMainWindowClass.Run (Line 109, “mAirListDBMainWindows.pas” + 74) + $74
[009A0E6C] mAirList.MainWindow (Line 86, “C:\projects\mAirList\trunk\mAirList.dpr” + 13) + $C
[009AB66A] mAirList.mAirList (Line 104, “C:\projects\mAirList\trunk\mAirList.dpr” + 14) + $5

Are you sure that you really recreated the database (overwrite the .db file) and not only set up the connection?

Steps to do:

  1. Open mAirListConfig
  2. Remove existing mAirListDB connection
  3. Click Add -> mAirListDB Lite
  4. In the dialog window, click “ok” to create a new database
  5. Select the previous .db file and confirm overwrite
  6. Save, go into mAirListDB, set up storages and import all files again.

This will have to be done periodically during the beta test, so don’t even think of using the DB in for any production means :wink:


I get an error that “one or more items couldn’t be added to the database” when trying to add either ALL files, some files or a selection of random ones (ie: I’m certain you have a bug and it’s not my files!)…

Also - the Multiple Artists feature, is this to be used to assist with scheduling so that related artists like Beatles, John Lennon etc can be defined or is it just to denote a duet song ?

… and if you plan to add some ‘AI’ to detect multiple artists during imports, beware of the … and his …/… and her … ‘problem’ (to name just one!).

You know? The one where you end up with 403 Titles by the Artist His Orchestra! :smiley:

(SOLUTION: Replace ‘His*’ and ‘Her*’ with ‘The*’; also ignore ‘The Orchestra’ (after replacement), and ignore ‘The Band,’ and … !) :wink:


Multiple artists should be inserted manually.

Yes, for now, it’s only for manual editing. It will help you to locate “Ain’t No Mountain High Enough” easier when you only recall that it’s by Marvin Gaye and some other person you can’t remember right now :wink:

It will also help the Scheduler to separate “Ain’t No Mountain High Enough” from “I Heard It Through The Grapevine” (because now, both songs are by Marvin Gaye, and possibly someone else).

It’s not meant for the John Lennon vs. Beatles thing. We will need to establish something like “artist groups” for that. If you put “John Lennon” and “Beatles” into the artist field of “Imagine”, the song would appear as “John Lennon/Beatles” in your log and online playlist, which is certainly not what you want.

Internally, mAirList stores the artists as separate strings (and also as multiple … nodes in the XML output). In the playlist, players and log file, the strings are joined by “/”. But mAirList will never split single artist fields found in file tags by itself. On the other hand, for the tags which supports multiple artist fields (e.g. ID3v2), mAirList will now import them one by one rather than joining them into a single field (which was the case in v2.2).

OK Torben, thanks for the explanation - I was hoping that this was the case. I agree that the scheduler/database should be the place to define “related artists” so that soloists and groups are kept apart etc.

Regarding this issue, when you try to add all files, will any of them be added?

And by the way, did you erase and re-create your database as noted above? Because you have to.

Yes, I did wipe the database a start again (re-created and tested the connection and tables were OK in the Config)… I’ll have another play later on… Admittedly, I didn’t try “All Files” as I had sub-folders of MP3s that I didn’t want to add :slight_smile:

Actually, there’s a new table (“itemArtists”) which I haven’t included in the connection test yet. And an existing table has been altered (column “artist” removed from table item"), a circumstance the connection test would not notice either - as it simply checks the existence of the table but not the column. (Making it detect any change made during the beta phase would not be worth the effort.)

Oh, and did you upgrade your sqlite3.dll?

If you know a little SQL (which I suppose you do), you can download sqlite3.exe from www.sqlite.org, place it alongside mAirList.exe and run it from the command line with "sqlite3 ". You can then check if all tables are ok, in particular the “itemArtist” introduced in b506.

Oops, my mistake. Finally found the bug mentioned in the original post. Disregard what I wrote about recreating the database.

Regarding the issue with the files not being added, I found a mistake which prevents any item which has cue points imported from an MMD file or file tag from being saved to the database. You should also get an error message when trying to save any of these as a playlist from within mAirList.

Will be fixed in b507.

I’ve found the following program

Sorry - I’ve not had a chance to play around with this but yeah I do know a little SQL so I can tinker “under the hood” if I need to :wink:

seems to work. Thank you torben