1

「Songs」テーブル(基本的に音楽のデータベース)に接続されているLibreoffice Baseにフォームがあり、そのフォームのCheckBoxをチェック/チェック解除するたびに、すべてのレコードの「再生」フィールドが必要です現在フォーム上にあるものと同じ名前と作成者もチェック/チェック解除します。これを行う唯一の方法はマクロを使用することだと読んだことがあります(今のところ多くのレコードが必要なため、リレーションを使用したくないため)。私はそのようなマクロを書きました:

    Sub UpdatePlayed()
        Context = CreateUnoService("com.sun.star.sdb.DatabaseContext")
        databaseURLOrRegisteredName = "file:///C:/Users/grzes/Desktop/Muzyka.odb"
        Db = Context.getByName(databaseURLOrRegisteredName )
        Conn = Db.getConnection("","") 'username & password pair - HSQL default blank

        dCheckBox = Forms("Formularz").Controls("CheckBox").Value
        dAuthorBox = Forms("Formularz").Controls("AuthorBox").Value
        dTitleBox = Forms("Formularz").Controls("TitleBox").Value  

        Stmt = Conn.createStatement()       
        strSQL = "UPDATE ""Songs"" SET ""Played"" = " + dCheckBox + " WHERE ""Title"" = '" + dTitle + "' AND ""Author"" = '" + dAuthor + "'"

        Stmt.executeUpdate(strSQL)

        Conn.close()

    End Sub


(AuthorBox とTitleBoxはテキスト ボックスであり、CheckBox はチェックが 1 に設定され、チェックが解除されて 0 に設定された CheckBox です) しかし、マクロが実行されても何も起こりません (マウス ボタンを押したイベントとしてチェックボックス自体にバインドされます) 。 SQLクエリは別のマクロと同様に問題なく使用できるため、問題は変数dcheckbox、dauthorbox、およびdtitleboxの設定またはstrSQLのいずれかにあるはずです。(コントロール名を変更するとエラーが発生するため、マクロ自体が実行されています)。質問は次のとおりです。何が問題なのですか?

よろしくお願いします。

4

1 に答える 1