deutschsprachige FoxPro User Group
Forum View
Home
  
  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





Hans-Werner Rodrian   30.01.2019 11:06
Uwe Habermann  30.01.2019 11:14
Hans-Werner Rodrian  01.02.2019 09:47
Uwe Habermann  01.02.2019 10:06
Hans-Werner Rodrian  01.02.2019 16:47
Uwe Habermann  02.02.2019 05:46
Hans-Werner Rodrian  02.02.2019 11:42
Uwe Habermann  03.02.2019 12:01
Hans-Werner Rodrian  03.02.2019 17:10
Uwe Habermann  04.02.2019 10:42
Hans-Werner Rodrian  04.02.2019 15:04
Uwe Habermann  05.02.2019 08:34
Hans-Werner Rodrian  05.02.2019 10:26
Uwe Habermann  05.02.2019 10:39
Hans-Werner Rodrian  11.02.2019 22:20
Hans-Werner Rodrian  05.02.2019 09:10
Hans-Werner Rodrian  05.02.2019 09:11
Hans-Werner Rodrian  05.02.2019 10:19
  
zurück zum Forum