Toon posts:

[MSSQL/ASP]Kan geen rows toevoegen.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb hier MSSQL 2000 enterprise evaluation edition draaien. Op windows xp met iis.
Ik heb een access database in mssql geimporteerd en de standaarduser van iis toegevoegd en hem alle rechten gegeven in de tabellen van die database namelijk:

SELECT INSERT UPDATE DELETE en DRI

die user heeft de "database role" public.
Maar toch krijg ik deze error als ik een row wil toevoegen:

code:
1
2
3
4
5
ADODB.Recordset error '800a0cb3' 

Bijwerken wordt door de huidige verzameling records niet ondersteund.
 Dit kan een beperking zijn van de voorziening of van het 
geselecteerde type vergrendeling.
Editten en lezen gaat.

De locktype staat op 2
2: Pessimistic locking, record by record. The provider lock records immediately after editing
3 gaat ook niet.

de rows worden toegevoegd met rs.AddNew.

Dus zijn het waarschijnlijk de rechten die verkeerd staan. Maar waar? Ik heb zoal overal gezocht en de iis user bijna admin rechten gegeven :X maar niets helpt.
En waarom staan mijn tabellen van in mijn site db nog eens in de master db?

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:34
Hmm.
Hoe ziet jouw query eruit van die recordset?
Haalt die gegevens uit meer dan 1 tabel?
Dan zal een AddNew niet lukken. AFAIK zal een AddNew een 'editable' recordset vereisen, en als je uit meer dan 1 tabel gegevens gaat selecteren is die recordset niet meer editable.

De beste manier om records toe te voegen aan een tabel is via een INSERT statement, en niet via een AddNew method van een object.

https://fgheysels.github.io/


Verwijderd

Topicstarter
nu gebruik ik dit:
code:
1
2
3
4
5
rs.AddNew
rs.Fields("comment") = strMessage
rs.Fields("poster") = strLoggedInUsername
rs.Fields("tijd") = now()
rs.Fields("hoortbij") = cint(intID)

en de gegevens worden worden hier uit één tabel en uit een form gehaald.
edit:
Ik ben het nu eens aan het proberen met een INSERT

[ Voor 20% gewijzigd door Verwijderd op 07-01-2003 22:00 ]


Verwijderd

Ermm, rs.Fields kan volgens mij beter rs worden.

Of heb je hier een speciale reden voor?

Verwijderd

Topicstarter
ermm, er moet toch aangegeven worden welke field (kolom) van je tabel je wil invullen met bvb een string?
Met access werkt deze code.

de volledige code:
code:
1
2
3
4
5
6
7
8
9
10
11
Set rs = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT tblcommentsnieuws.* FROM tblcommentsnieuws;"
rs.CursorType = 2
rs.LockType = 3
rs.Open strSQL, strCon
rs.AddNew
rs.Fields("comment") = strMessage
rs.Fields("poster") = strLoggedInUsername
rs.Fields("tijd") = now()
rs.Fields("hoortbij") = cint(intID)
rs.Update

[ Voor 59% gewijzigd door Verwijderd op 07-01-2003 22:31 ]


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Verwijderd schreef op 07 januari 2003 @ 22:11:
Ermm, rs.Fields kan volgens mij beter rs worden.
De Fields collection is de default property van de RecordSet class, daarom is dit gelijkwaardig:
rs.Fields("id") = 123
rs("id") = 123
rs!id = 123

(als ik het goed heb, vb6 is al weer een tijdje terug)

| Toen / Nu


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

* adovbs.inc niet geinclude?
* geen cursortype gespecificeerd?

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Verwijderd

En als je de record m.b.v. een sql statement toevoegt i.p.v een record set ? Wat doet ie dan.

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Gebruik je in ASP ook CursorType 2 en LockType 3?

Probeer het anders eens zo:
ASP.NET Visual Basic:
1
2
3
4
5
6
strSQL = "INSERT INTO tblcommentsnieuws (comment, poster, tijd, hoortbij) " _
            & "VALUES ('" & strMessage & "', " _
            & "'" & strLoggedInUsername & "', " _
            & "'" & now() & "', " _
            & "'" & intID & "')"
strCon.Execute strSQL
Pagina: 1