Resolved Getting an odd Systax Error when updating.

Runescope

Well-known member
Joined
Jan 6, 2011
Messages
53
Programming Experience
Beginner
Okay, I have this code.
VB.NET:
[COLOR=blue]Private[/COLOR] [COLOR=blue]Sub[/COLOR] btnRSave_Click([COLOR=blue]ByVal[/COLOR] sender [COLOR=blue]As[/COLOR] System.[COLOR=#2b91af]Object[/COLOR], [COLOR=blue]ByVal[/COLOR] e [COLOR=blue]As[/COLOR] System.[COLOR=#2b91af]EventArgs[/COLOR]) [COLOR=blue]Handles[/COLOR] btnPHSave.Click         
[COLOR=blue]Dim[/COLOR] PID [COLOR=blue]As[/COLOR] [COLOR=blue]Integer[/COLOR]
[COLOR=blue]Dim[/COLOR] CBPH [COLOR=blue]As[/COLOR] [COLOR=blue]New[/COLOR] [COLOR=#2b91af]OleDbCommandBuilder[/COLOR](PHDA)         
[COLOR=blue]Dim[/COLOR] Foundrow [COLOR=blue]As[/COLOR] [COLOR=#2b91af]DataRow[/COLOR]() 

PID = grdHistorical(12, grdHistorical.CurrentRow.Index).Value         

Foundrow = PHDT.Select([COLOR=#a31515]"[PID] = '"[/COLOR] & PID & [COLOR=#a31515]"'"[/COLOR])           
Foundrow(0)([COLOR=#a31515]"EndPrice"[/COLOR]) = txtPHEPrice.Text         
Foundrow(0)([COLOR=#a31515]"EDate"[/COLOR]) = btnPHEDate.Text         
Foundrow(0)([COLOR=#a31515]"PurcNote"[/COLOR]) = txtPHNotes.Text           

PHDA.Update(PHDT)         
PHDS.Clear() : PHDA.Fill(PHDS, [COLOR=#a31515]"Reinvest"[/COLOR]) : PHDT = PHDS.Tables([COLOR=#a31515]"Reinvest"[/COLOR])         
FillSingleHistoric()     
[COLOR=blue]End[/COLOR] [COLOR=blue]Sub[/COLOR]

Which works fine, and everything updates. But for some reason this code give me a syntax error.

VB.NET:
[COLOR=blue]Private[/COLOR] [COLOR=blue]Sub[/COLOR] btnRSave_Click([COLOR=blue]ByVal[/COLOR] sender [COLOR=blue]As[/COLOR] System.[COLOR=#2b91af]Object[/COLOR], [COLOR=blue]ByVal[/COLOR] e [COLOR=blue]As[/COLOR] System.[COLOR=#2b91af]EventArgs[/COLOR]) [COLOR=blue]Handles[/COLOR] btnPHSave.Click         
[COLOR=blue]Dim[/COLOR] PID [COLOR=blue]As[/COLOR] [COLOR=blue]Integer[/COLOR], ActString [COLOR=blue]As[/COLOR] [COLOR=blue]String[/COLOR]         
[COLOR=blue]Dim[/COLOR] CBPH [COLOR=blue]As[/COLOR] [COLOR=blue]New[/COLOR] [COLOR=#2b91af]OleDbCommandBuilder[/COLOR](PHDA)         
[COLOR=blue]Dim[/COLOR] Foundrow [COLOR=blue]As[/COLOR] [COLOR=#2b91af]DataRow[/COLOR]() 

PID = grdHistorical(12, grdHistorical.CurrentRow.Index).Value         

Foundrow = PHDT.Select([COLOR=#a31515]"[PID] = '"[/COLOR] & PID & [COLOR=#a31515]"'"[/COLOR])           
Foundrow(0)([COLOR=#a31515]"EndPrice"[/COLOR]) = txtPHEPrice.Text         
Foundrow(0)([COLOR=#a31515]"EDate"[/COLOR]) = btnPHEDate.Text         
Foundrow(0)([COLOR=#a31515]"PurcNote"[/COLOR]) = txtPHNotes.Text   

[COLOR=blue]If[/COLOR] chkPHAction.Checked = [COLOR=blue]True[/COLOR] [COLOR=blue]Then[/COLOR] ' Start of new rows             
     ActString = [COLOR=#a31515]"1"[/COLOR]         
[COLOR=blue]Else[/COLOR]             
     ActString = [COLOR=#a31515]"0"[/COLOR]         
[COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR]         
Foundrow(0)([COLOR=#a31515]"Action"[/COLOR]) = ActString ' end of new rows           

PHDA.Update(PHDT) ' Error happens here         
PHDS.Clear() : PHDA.Fill(PHDS, [COLOR=#a31515]"Reinvest"[/COLOR]) : PHDT = PHDS.Tables([COLOR=#a31515]"Reinvest"[/COLOR])         
FillSingleHistoric()     
[COLOR=blue]End[/COLOR] [COLOR=blue]Sub[/COLOR]

Is 'Action' a reserved word or something? I'm updating an access database from an old VB6 program to VB2010.

When I hover over 'PHDA.Update(PHDT)' to find out the problem with update command, it says that it's nothing. What's odd to me is that it says it's nothing when it's working as well. Confusing the heck out of me!
 
Last edited:
The reason that the UpdateCommand is Nothing is that it gets generated on the fly by the command builder. You can get access to it in code by calling GetUpdateCommand on the command builder. If you suspect that it's an issue with reserved words or special characters though, that can be fixed easily. Simply set the QuotePrefix and QuoteSuffix properties of your command builder so that your identifiers get escaped in code. For Access the values would be "[" and "]" respectively. That way, "Action" becomes "[Action]" in your SQL code and it doesn't matter if it's a reserved word.
 
Excellent! That was it! I should have spotted that myself, but for some reason my popup options were set on 'Common' instead of 'All' lol. Thank you very much!
 
Back
Top