Karin: recordset update

Hallo

Ich habe ein Recordset und moechte Werte darin veraendern, aber irgendwie klappt das nicht so richtig.

Ich versuchs so:
do while not Lieg_RS.EOF
  Lieg_RS.gfields(1).value = Left(Lieg_RS.gfields(1).value, 4)
  Lieg_RS.update
  Lieg_RS.movenext
loop

Was ist da falsch? (das mit dem gfields ist es nicht, das stimmt so)

Gruss
Karin

  1. Hallo,
    was passiert denn? Fehler? Meldung?

  2. Hi, hallo

    erstmal, was ist gfields?  Es gibt in meinen Versionen keine Eigenschaft oder Methode gfields bei einem Recordset.

    Interessant ist auch, wie du das Recordset erzeugst, mit ADODB.connection.execute oder mit ADODB.Recordset.Open

    erstere Variante erzeugt ein adOpenForwardOnly, adLockReadOnly Recordset
                                                    ^^^^^^^^^^^^^^

    Tschau, tschüß,
    Frank

    1. Hallo

      gfields kommt von einem Mapserver, ist aber das Gleiche wie fields. Die connection mache ich ueber odbc mit connect und dann mit openrecordset(meineSQL). Ich beabsichtige auch nicht irgendwas in der DB zu aendern, sondern ich moechte nur in diesem Recordset Werte umsetzen.
      Wie wurde man das denn in einem ganz normalen RS machen?

      Gruss
      Karin

      1. Hi, hallo

        'conn ist die DB verbindung

        rs_sql = "SELECT * FROM table1"

        set rs = CreateObject("ADODB.Recordset")
        rs.open rs_sql,conn,adOpenStatic,adLockOptimistic

        do until rs.eof
          rs.fields("feldx").value = "abcv"
          rs.update
          rs.moveNext
        loop

        rs.close
        set rs = nothing

        • du solltest schreibrechte für die Datenbankobjekte besitzen
        • du solltest eine Identifikation jedes Datensatzes für den Updatebefehl haben (sonst Fehlermeldung, das Update sich auf zuviele DS bezieht)
        • du solltest das RS entsprechend öffnen um schreiben zu können.

        lt deiner Äußerung ist gfields dasselbe ... aber dann nimmst du kein normales ADODB.Recordset (2.5 bis 2.7) sondern irgendwas modifiziertes ... und da kann ich dir keine Hilfe geben. gfields ist nicht in ADO spezifiziert.

        die DB verbindung ist halb nebensache, natürlich sollte der Provider sachen wie cursorType und locktype und marshaling verstehen um Datensätze für simulanen Zugriff zu sperren.

        Tschau, tschüß,
        Frank