[asp.net + MS Access]

Pagina: 1
Acties:
  • 38 views sinds 30-01-2008

  • DJ-B
  • Registratie: September 2001
  • Laatst online: 30-04 07:45
Ik heb een formulier gemaakt waarin de gebruiker nieuwe gegevens kan invoeren. Deze worden opgeslagen in een access database.
Zodra ik gegevens in de database wil opslaan krijg ik de navolgende fout op line 45:

Exception Details: System.Data.OleDb.OleDbException: Syntax error in FROM clause.
Source Error:
Line 43:
Line 44: 'Fill the dataset with info from the database
Line 45: Adapter.Fill(UserDS,"User")

Ik gebruik deze code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<%@ Page Language="VB" Debug="True" Explicit="True" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.Oledb" %>

Sub SaveAndNext (Sender As Object, E As EventArgs)
           'Create Database connection information
           Dim Connect As OleDbConnection = New OleDbConnection
           Dim ConnectString As String
           ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\Inetpub\wwwroot\crf\data\users.mdb"
           Connect.ConnectionString = ConnectString
    
           'Create the database commands
           Dim InsertRowCommand As OleDbCommand = New OleDbCommand
    
           'Create the SQL and gives the connection info to the command object
           InsertRowCommand.CommandText = "Select * from User"
           InsertRowCommand.Connection = Connect
    
           'Create a adapter and gives the command object to the adapter object
           Dim Adapter As OleDbDataAdapter = New OleDbDataAdapter
           Adapter.SelectCommand = InsertRowCommand
    
           'Connect to the database
           Adapter.SelectCommand.Connection.Open
    
           'Create a dataset to store the tables in.
           Dim UserDS As DataSet = New DataSet
    
           'Fill the dataset with info from the database
           Adapter.Fill(UserDS,"User")
    
           Dim Row As DataRow
           Row = UserDS.Tables("User").NewRow
    
           Row.Item("CRF") = 1
           Row.Item("Username") = Username.Text
           Row.Item("Domain") = Domain.SelectedItem.Text
           Row.Item("Firstname") = Firstname.Text
           Row.Item("Lastname") =  Lastname.Text
           Row.Item("Mail") = Email.Text
           Row.Item("Location") = Location.SelectedItem.Text
           Row.Item("sector") = Sector.SelectedItem.Text
           Row.Item("Department") = Department.Text
    
           Dim ItemNum As Integer
           Dim RoleForDB As String
    
           For ItemNum = 0 To Role.Items.Count - 1
               If Role.Items(ItemNum).Selected = True Then
               RoleForDB = RoleForDB & Role.Items(Itemnum).Text
               End If
           Next
    
           Row.Item("Role") = RoleForDB
    
    
           UserDS.Tables("User").Rows.Add(Row)
           Adapter.Update(UserDS,"User")
    
           Response.redirect("CreateNewUser.aspx")
         End Sub


Na eindeloos zoeken op internet heb ik nog steeds geen idee van wat er fout gaat :(.

- Rechten staan goed
- Select query is in orde

Iemand een verhelderend idee? Alvast enorm bedankt! :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 30-04 15:31
De query is niet in orde, anders zou je geen syntax error krijgen in die query.
Heb je die query al eens zo uitgevoerd in je databank ?

Trouwens, je titel mist. Verzin even een goeie titel, en meldt deze dan via de topic-report, dan kan hij aangepast worden.

[ Voor 32% gewijzigd door whoami op 13-09-2005 17:01 ]

https://fgheysels.github.io/


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

USER is een reserved word als ik me niet vergis. Maak er eens dit van:
SQL:
1
SELECT * FROM [user]

In plaats van:
SQL:
1
SELECT * FROM user

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • DJ-B
  • Registratie: September 2001
  • Laatst online: 30-04 07:45
whoami schreef op dinsdag 13 september 2005 @ 17:00:
De query is niet in orde, anders zou je geen syntax error krijgen in die query.
Heb je die query al eens zo uitgevoerd in je databank ?

Trouwens, je titel mist. Verzin even een goeie titel, en meldt deze dan via de topic-report, dan kan hij aangepast worden.
Wat zou er mis kunnen zijn met Select * from user ? De tabel heet user dus dat is in orde.

Verwijderd

Visual Basic .NET:
1
2
3
4
  
           'Create the SQL and gives the connection info to the command object
           InsertRowCommand.CommandText = "Select * from User"
           InsertRowCommand.Connection = Connect

Ik denk dat User misschien een 'reserved word' is, dus hernoem je tabel liever naar iets anders. Of probeer er anders eens [User] van te maken.
offtopic:
Raar dat je een OleDbCommand InsertRowCommand noemt maar er een SELECT statement in stopt.


edit:
/me is spuit 11 :)

[ Voor 13% gewijzigd door Verwijderd op 13-09-2005 17:07 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 30-04 15:31
Je hebt die query dus nooit zo even in Access getest ?
User zou idd wel eens een reserved word kunnen zijn, en dan moet je dat 'escapen'.

* whoami is met MrX ivm de naamgeving.

https://fgheysels.github.io/


  • DJ-B
  • Registratie: September 2001
  • Laatst online: 30-04 07:45
Het woord user lijkt inderdaad een probleem te zijn geweest.

Nu krijg ik de melding:
Update requires a valid InsertCommand when passed DataRow collection with new rows.

Op lijn 73

Line 72: UserDS.Tables("Users").Rows.Add(Row)
Line 73: Adapter.Update(UserDS,"Users")

Ik heb een Select commando gebruikt omdat mijn leerboek (ASP.NET for Dummies) dat zo aangeeft, dit word gebruikt voor het vullen van de dataset. Zou dit toch anders moeten?

  • whoami
  • Registratie: December 2000
  • Laatst online: 30-04 15:31
Wel, de foutmelding is toch logisch ?
Je hebt geen Insert command aan je data-adapter hangen.

Verder is het hier niet de bedoeling dat je zomaar je code hier kunt neerzetten, en verwachten dat iemand hier zo lief is om het voor jou op te lossen.
Een beetje debuggen en zelf uitzoeken kan nooit kwaad, zeker als je de oplossing ook in de help kunt vinden, en als de foutmelding al zo duidelijk is. Je moet dus een insert-command aan je data-adapter hangen, hoe wil je anders dat die data-adapter weet hoe hij een rij moet inserten. Hetzelfde geldt trouwens voor het updaten/deleten. Je kan die commands wel laten generen door .NET though.

Dit is dus iets wat je zelf ook kunt oplossen, mits een beetje zoekwerk.
Blijkbaar ook geen zin om een titel te verzinnen ?

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.