Hi Gerold,
erstmal wie immer vielen vielen Dank für deine tollen Mühen.
Also ich habe es zwar gelöst, werde daraus aber nicht schlau.
Oben hatte ich das Beispiel stark vereinfacht.
Eigentlich mache ich folgendes:
Ich dupliziere einen DS mit folgendem Script:
Code: Alles auswählen
DATENSATZNAME_SINGULAR = 'Parameter'
DATENSATZNAME_PLURAL = 'Parameter'
if len(edit) > 0:
for ds_id in edit:
# zu duplizierenden DS lesen:
sql_result = context.q_DS_by_id(id = ds_id)
# gelesenen DS duplizieren (neu anlegen):
context.q_DS_insert(
user = str(context.getAuthUser('id')),
par_kategorie = str(sql_result[0][5]),
par_name = str(sql_result[0][6]),
par_geltbereich = str(sql_result[0][7]),
par_wert = str(sql_result[0][8]),
par_beschreibung = str(sql_result[0][9]))
if len(edit) == 1:
return state.set(portal_status_message = 'Der %s wurde dupliziert.' %DATENSATZNAME_SINGULAR)
else:
return state.set(portal_status_message = 'Die %s wurden dupliziert.' %DATENSATZNAME_PLURAL)
else:
return state.set(portal_status_message = 'Sie haben keinen %s zum Duplizieren ausgewählt.' %DATENSATZNAME_SINGULAR)
Wenn ich die Typumwandlungen str() wegnehme kommt die iteration - Fehlermeldung. Insofern hat dein Tip mir geholfen.
Die Spaltentypen in MySQL lauten:
user - VARCHAR(15)
par_kategorie, par_name - VARCHAR(25)
par_geltbereich - INTEGER
und par_wert und par_beschreibung - TINYTEXT
Das heißt alles abgesehen von par_geltbereich ist vom alphanumerischen Typ und dennoch klappt es nur, wenn ich alles als str() übergebe.
Du hast auf das type="string" in der Z SQL Methode hingewiesen. Vermutlich hängt es damit zusammen.
Was schreibe ich denn sonst für einen type="?" hin? Habe das bisher immer so gemacht, weil ich bis jetzt noch keine gute Beschreibung zu möglichen Typvarianten in Zope Z SQL Method Objekten finden konnte. Schaue nochmal ins ZOPE-Buch rein
Also dann grüße ich dich!
Jamil