Hello,
as I'm slowly working through this guide, I get the next error: when I try to
save a new record for the "hours" table, the error messages are:
1. "Notice" message box:
Save Failed:
table hours has no column named clientname
SQL: insert into "hours"
("clientfk", "notes", "hours", "servicedate", "billed", "clientname") values
(1, 'Test', 2.00, '2008-08-16', '', NULL)
2. In the terminal:
Dabo Error Log: Sat Aug 16 16:02:14 2008: !!! Data Type Mismatch:
field=servicedate. Expecting: <type 'unicode'>; got: <type 'datetime.date'>
Dabo Info Log: Sat Aug 16 16:02:14 2008: Key '0' not found
Why this? In the database the field has type "date", and only using the Python
sqlite3 module I can use a datetime.date object as parameter to an insert
statement.
Message 1 is quite right, but why has such an insert statement been generated?
And where can I change it?
The BizObject:
#!/usr/bin/env python
# -*- coding: utf8 -*-
# BizHours.py
# Step-By-Step Guide to Dabo Programming
import datetime
import dabo
class BizHours(dabo.biz.dBizobj):
def afterInit(self):
self.DataSource = "hours"
self.KeyField = "pkid"
self.addField("hours.pkid")
self.addField("hours.clientfk")
self.addField("clients.clientname")
self.addField("hours.servicedate")
self.addField("hours.hours")
self.addField("hours.notes")
self.addField("hours.billed")
self.addFrom("hours")
self.addJoin("clients", "hours.clientfk = clients.pkid")
self.DefaultValues = {"servicedate": datetime.date.today()}
def getClients(self):
"""Return a 2-tuple of lists of the client names and their keys."""
crs = self.getTempCursor()
crs.execute("select pkid, clientname from clients order by
clientname")
ds = crs.getDataSet()
# Create the lists
names = [rec["clientname"] for rec in ds]
keys = [rec["pkid"] for rec in ds]
return (names, keys)
And the table structure for the "hours" table (ported to SQLite):
CREATE TABLE hours (
pkid integer PRIMARY KEY,
clientfk integer NOT NULL,
servicedate date NOT NULL default CURRENT_DATE,
hours real(4,2) NOT NULL,
notes text(240) NOT NULL,
billed tinyint(1) NOT NULL default 0 check(billed in (0, 1))
);
What is wrong here?
Thank you,
Sibylle
--
Dr. Sibylle Koczian
_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-users
Searchable Archives: http://leafe.com/archives/search/dabo-users
This message: http://leafe.com/archives/byMID/[EMAIL PROTECTED]