last-sql and show using calcuated sql fields

This commit is contained in:
David Botton 2022-02-27 16:51:32 -05:00
parent f010b232bb
commit 26f587b8c8
3 changed files with 13 additions and 6 deletions

View file

@ -89,6 +89,10 @@ CLOG-Builder. If not using builder use to connect:
:accessor last-fetch
:initform nil
:documentation "Last fetch plist")
(last-sql
:accessor last-sql
:initform nil
:documentation "Last sql executed")
(columns
:accessor table-columns
:initform nil
@ -141,6 +145,7 @@ of type-of CLOG-DATABASE it is used as database source unless
SQL. row-id-name is required for updates. All PANEL items or custom
slots on panel will be set using DATA-LOAD-PLIST."))
(defmethod query-row ((obj clog-one-row) panel sql)
(setf (last-sql obj) sql)
(setf (queryid obj) (dbi:execute
(dbi:prepare
(database-connection (clog-database obj))
@ -165,14 +170,15 @@ be set using DATA-LOAD-PLIST."))
(if (equal where "")
""
(format nil " and ~A" where))))))
(setf (queryid obj) (dbi:execute
(dbi:prepare
(database-connection (clog-database obj))
(sql-select (table-name obj)
(setf (last-sql obj) (sql-select (table-name obj)
(table-columns obj)
:where where
:order-by (order-by obj)
:limit (limit obj))))))
:limit (limit obj)))
(setf (queryid obj) (dbi:execute
(dbi:prepare
(database-connection (clog-database obj))
(last-sql obj)))))
(next-row obj panel))
(defgeneric next-row (clog-one-row panel)

View file

@ -557,6 +557,7 @@ embedded in a native template application.)"
(rowid generic-function)
(table-columns generic-function)
(last-fetch generic-function)
(last-sql generic-function)
(query-row generic-function)
(get-row generic-function)
(next-row generic-function)

View file

@ -1 +1 @@
<data id="I3854977833" data-in-package="clog-user" data-custom-slots="" data-clog-next-id="8" data-clog-title="panel-1"></data><div data-clog-type="database" data-clog-dbi-dbtype=":sqlite3" data-clog-dbi-dbname="/home/dbotton/common-lisp/clog/test/test.db" data-clog-dbi-dbparams="" data-clog-name="database-1" style="box-sizing: content-box; position: static; left: 17px; top: 18px;"><div data-clog-type="one-row" data-clog-one-row-table="r" data-clog-one-row-where="" data-clog-one-row-order="" data-clog-one-row-limit="" data-clog-one-row-master="" data-clog-one-row-id-name="rowid" data-clog-one-row-columns="rowid name nickname" data-clog-name="one-row-2" style="box-sizing: content-box; position: static; left: 69px; top: 6px;"><select data-clog-type="lookup-list" size="4" data-clog-one-row-table="i" data-clog-lookup-value="invoice" data-clog-lookup-option="invoice" data-clog-one-row-where="" data-clog-one-row-order="" data-clog-one-row-limit="" data-clog-one-row-master="name" data-clog-one-row-id-name="rowid" data-clog-one-row-columns="rowid name invoice" data-clog-name="invoice" style="box-sizing: content-box; position: absolute; left: 81px; top: 106px; width: 260px; height: 74px;"></select><select data-clog-type="lookup-drop" data-clog-one-row-table="i" data-clog-lookup-value="invoice" data-clog-lookup-option="invoice" data-clog-one-row-where="" data-clog-one-row-order="" data-clog-one-row-limit="" data-clog-one-row-master="name" data-clog-one-row-id-name="rowid" data-clog-one-row-columns="rowid name invoice" data-clog-name="lookup-drop-7" style="box-sizing: content-box; position: absolute; left: 93px; top: 197px; width: 237px; height: 20px;" data-on-create="(get-row (one-row-2 panel) panel)"></select></div></div><span data-clog-type="span" data-clog-name="name" style="box-sizing: content-box; position: absolute; left: 97px; top: 42px; width: 205px; height: 23px; color: rgb(0, 0, 0); background-attachment: scroll; background-color: rgb(221, 221, 50);">span</span><input type="TEXT" value="" data-clog-type="input" data-clog-name="nickname" style="box-sizing: content-box; position: absolute; left: 97px; top: 68px;">
<data id="I3854987208" data-in-package="clog-user" data-custom-slots="" data-clog-next-id="10" data-clog-title="panel-1"></data><div data-clog-type="database" data-clog-dbi-dbtype=":sqlite3" data-clog-dbi-dbname="/home/dbotton/common-lisp/clog/test/test.db" data-clog-dbi-dbparams="" data-clog-name="database-1" style="box-sizing: content-box; position: static; left: 17px; top: 18px;"><div data-clog-type="one-row" data-clog-one-row-table="r" data-clog-one-row-where="" data-clog-one-row-order="" data-clog-one-row-limit="" data-clog-one-row-master="" data-clog-one-row-id-name="rowid" data-clog-one-row-columns="rowid name nickname" data-clog-name="one-row-2" style="box-sizing: content-box; position: static; left: 69px; top: 6px;"><select data-clog-type="lookup-list" size="4" data-clog-one-row-table="i" data-clog-lookup-value="invoice" data-clog-lookup-option="disp2" data-clog-one-row-where="" data-clog-one-row-order="" data-clog-one-row-limit="" data-clog-one-row-master="name" data-clog-one-row-id-name="rowid" data-clog-one-row-columns="rowid name invoice (&quot;invoice || ' ' || idate&quot; &quot;disp2&quot;)" data-clog-name="invoice" style="box-sizing: content-box; position: absolute; left: 81px; top: 106px; width: 260px; height: 74px;"></select><select data-clog-type="lookup-drop" data-clog-one-row-table="i" data-clog-lookup-value="invoice" data-clog-lookup-option="invoice" data-clog-one-row-where="" data-clog-one-row-order="" data-clog-one-row-limit="" data-clog-one-row-master="name" data-clog-one-row-id-name="rowid" data-clog-one-row-columns="rowid name invoice" data-clog-name="lookup-drop-7" style="box-sizing: content-box; position: absolute; left: 93px; top: 197px; width: 237px; height: 20px;" data-on-create="(get-row (one-row-2 panel) panel)"></select></div></div><span data-clog-type="span" data-clog-name="name" style="box-sizing: content-box; position: absolute; left: 97px; top: 42px; width: 205px; height: 23px; color: rgb(0, 0, 0); background-attachment: scroll; background-color: rgb(221, 221, 50);">span</span><input type="TEXT" value="" data-clog-type="input" data-clog-name="nickname" style="box-sizing: content-box; position: absolute; left: 97px; top: 68px;"><button data-clog-type="button" data-clog-name="button-8" data-on-click="(get-row (one-row-2 panel) panel)" style="box-sizing: content-box; position: absolute; left: 3px; top: 32px; width: 35px; height: 22px;">First</button><button data-clog-type="button" data-clog-name="button-9" class="" data-on-click="(next-row (one-row-2 panel) panel)" style="box-sizing: content-box; position: absolute; left: 3px; top: 65px; width: 35px; height: 22px;">Next</button>