|
|
Re: CA speichert nicht- #20490 in section [741827] |
Sec: |
(28) VFX deutsch |
Von: |
Hans-Werner Rodrian |
An: |
Uwe Habermann |
Am/Um: |
01.02.2019 09:47:59 |
--from Newsreader at Freitag, 1. Februar 2019; 09:47:59-- Okay, Versuch mit CA Klasse: *CA einstellen und bereitstellen SET MULTILOCKS ON locablogs = createobject("cablogs") WITH locablogs .updatablefieldlist = "SEITZAHL" .cfieldstowritenullwhenempty = "SEITZAHL" .updatenamelist = "SEITZAHL BLOGS.SEITZAHL" .KeyFieldList = "ID" && steht sowieso schon in der Klasse .CursorFill() ENDWITH * Info-Cursor bereitstellen (damit ich weiß, was für Seitenzahlen das überhaupt sind lcSQL2 = "SELECT adr.firma, blogs.status, blogs.isdel, blogs.edit_date, blogs.xsync, blogs.id, fkt.id as fktid, " ; + "abt.id as abtid, adr.id as adrid, pers.id as persid FROM blogs INNER JOIN abt ON blogs.abt_id = abt.id " ; + "INNER JOIN adr ON abt.adr_id = adr.id LEFT JOIN fkt ON abt.id = fkt.id LEFT JOIN pers ON fkt.pers_id = pers.id " locablogslist = OpenTable(lcSQL2,"ID",.T.,"",.T., ,"crsBlogslist") SELECT *," " as firma2,abtid as abt_id," " as lkz,edit_date as xbearb FROM crsBlogslist WHERE status = 'F' AND !isdel ORDER BY firma INTO CURSOR cuseitzahl && die Sache in die richtige Reihenfolge bringen USE DBF("cablogs") IN 0 AGAIN ALIAS tblTable && damit ich einen Index erstellen kann lcTag = "abt_id" SELECT tbltable INDEX on &lcTag TO c:/temp/cuseitzahl.idx sele cuSeitzahl set rela to &lcTag into tblTable addi ** Eintragungsmöglichkeit set confirm on brow title "Hier kann die Seitenzahl eingetragen werden" ; widt 10 field tblTable.seitzahl : 6,lkz : 6 :R, firma :30 :R,firma2 :20 :R,&lcTag :R,tblTable.&lcTag :R set confirm off ** Abspeichern SELECT cablogs CURSORSETPROP("Buffering", 5,"cablogs") lbResult = TABLEUPDATE() lnGeaenderteDatensaetze = _TALLY USE IN tblTable RETURN >> leider selbes Ergebnis (keine Fehlermeldung, aber Daten am mssql bleiben unverändert Ich habe dann noch händisch am Debugger rumprobiert, den Info-Cursor wegzulassen und vor dessen Erstellung am Befehlsfenster dieses gemacht: BROWSE FOR status = 'F' AND abt_id = 1003798 && nur eine Zeile im Browsefenster angezeigt lbresult = TABLEUPDATE() && wieder gleiches Ergebnis SELECT cablogs CURSORSETPROP("Buffering", 5,"cablogs") && da bringt er jetzt einen Fehler: >>No key columns are specified for the update table "blogs". Use the KeyFieldList property of the cursor.<< Aber die Keyfieldlist ist spezifiziert, siehe oben ??? Hast du noch einen Tipp? Danke Hans-Werner "Uwe Habermann" schrieb im Newsbeitrag news:741822... --from Newsreader at Mittwoch, 30. Januar 2019; 11:14:20-- Hallo Hans-Werner! >>Ich habe eine Table mit vielen (ca. 112) Feldern am MSSQL. Die hole ich >>mir mit opentable(), dann ändere in den meisten Zeilen was (allerdings nur in einer Spalte) und dann will das Ganze abspeichern. Das Abspeichern funktioniert nicht.<< Bitte versuch es mal mit einer CA Klasse, statt opentable zu verwenden. Ich könnte mir vorstellen, dass der generierte Update-Befehl zu lang wird. Mit einem CA kommst Du der Ursache hoffentlich näher. Viele Grüße Uwe Habermann
|
|
|
|