|
|
Re: CA speichert nicht- #20492 in section [741829] |
Sec: |
(28) VFX deutsch |
Von: |
Hans-Werner Rodrian |
An: |
Uwe Habermann |
Am/Um: |
01.02.2019 16:47:17 |
--from Newsreader at Freitag, 1. Februar 2019; 16:47:17-- Hallo Uwe, vielen Dank. Ich habe mir mittlerweile eine Test-PRG gebastelt, deren Inhalt ich unten einkopiere: locablogs.BufferModeOverride = 5 && ist erledigt locablogs.SendUpdates = .t. && ja, das ist so eingestellt Ereignis AfterCursorUpdate. Wie ist der Inhalt von cErrorArray? Ich habe in cablogs.afterCursorUpdate dieses ergänzt: SET STEP ON DODEFAULT() RETURN Ergebnis: sowohl vor als auch nach dem DODEFAULT() ist cErrorArray = ..F. Noch was: Wg der vorherigen Fehlermeldung >>No key columns are specified for the update table "blogs". Use the KeyFieldList property of the cursor.<< habe ich am mssqö nachgeschaut und fand tatsächlich in der Table BLOGS, dass sie zwar einen Index auf ID hatte, aber kein Schlüsselzeichen davor, also wohl keinen primary index. Den habe ich ihr jetzt verpasst mit ALTER TABLE blogs ADD PRIMARY KEY (ID). Geändert hat das nichts. Jetzt bin ich mir aber nicht sicher, ob ich an der CursorAdapter was verändern muss? Danke Hans-Werner Hier die Test-PRG: SET STEP ON CLEAR ALL set multilocks on SET CLASSLIB TO lib\appl.vcx additive SET PROCEDURE TO program/vfxfunc ADDITIVE loCursor = createobject("caBlogs") with loCursor .Alias = "cablogs" .DataSourceType = "ODBC" .DataSource = sqlstringconnect("DRIVER={SQL Server};SERVER=178.248.243.89,1927; UID=sa;PWD=srt_MSDE-04012005!;DATABASE=TPM09") .updatablefieldlist = "SEITZAHL" .cfieldstowritenullwhenempty = "SEITZAHL" .updatenamelist = "SEITZAHL BLOGS.SEITZAHL" .KeyFieldList = "ID" && steht sowieso schon in der Klasse .BufferModeOverride = 5 if .CursorFill() debugout "Success in filling " + .Alias + "!" browse else m.liHowMany = aerror(aOoops) m.lcStrError = '' for m.li = 1 to m.liHowMany m.lcStrError = m.lcStrError + aOoops[m.li,2] + chr(13) next debugout m.lcStrError return.f. ENDIF endwith UPDATE cablogs SET seitzahl = 0 TABLEUPDATE(.T.) return "Uwe Habermann" schrieb im Newsbeitrag news:741828... --from Newsreader at Freitag, 1. Februar 2019; 10:06:11-- Hallo Hans-Werner! >>CURSORSETPROP("Buffering", 5,"cablogs") << Stattdessen schreibst Du VOR dem Cursorfill() besser: locablogs.BufferModeOverride = 5 Ist locablogs.SendUpdates = .t. eingestellt20 Dann guck bitte mit dem Debugger in das Ereignis AfterCursorUpdate. Wie ist der Inhalt von cErrorArray20 Viele Grüße Uwe Habermann
|
|
|
|