mkelly2384
asked on
Error 3078 can't find table
When I run the code below I get a 3078 error that it can't find the table or query. It is happening at this line:
strSQL = "INSERT INTO tbl_HISTORY( CLIENT_ID ) VALUES (Me.CLIENT_ID)"
CurrentDb.Execute strSQL1, dbFailOnError
If the answer to the msgbox is yes, than I want it to create a new record in tbl_HISTORY and then display CLI_HISTORY_subform using that new record. Can anyone tell me why I'm getting this error?
strSQL = "INSERT INTO tbl_HISTORY( CLIENT_ID ) VALUES (Me.CLIENT_ID)"
CurrentDb.Execute strSQL1, dbFailOnError
If the answer to the msgbox is yes, than I want it to create a new record in tbl_HISTORY and then display CLI_HISTORY_subform using that new record. Can anyone tell me why I'm getting this error?
Dim strSQL As String
DoCmd.Hourglass True
Application.Echo False, "Processing ..."
With Me
Select Case tabClients
Case 0 ' First TabPage (General)
' Do nothing. SourceObject loaded.
Case 1 ' Second TabPage (Academic)
'Load source objects on Academic tab
If .stuSchedule_subform.SourceObject <> "frm_STU_SCHEDULE" Then
.stuSchedule_subform.SourceObject = "frm_STU_SCHEDULE"
End If
If .academics_subform.SourceObject <> "frm_STU_ACAD" Then
.academics_subform.SourceObject = "frm_STU_ACAD"
End If
Case 2 ' Third TabPage (History)
'Find client history.
If DLookup("CLIENT_ID", "tbl_HISTORY", "CLIENT_ID = " & Me.CLIENT_ID) Then
.CLI_HISTORY_subform.SourceObject = "frm_CLI_HISTORY"
Else
'If no history is available, prompt user to add client history.
If MsgBox("No client history available. Would you like to add it now?", vbYesNo) = vbYes Then
'Insert a new record into in tbl_CLI_HISTORY
strSQL = "INSERT INTO tbl_HISTORY( CLIENT_ID ) VALUES (Me.CLIENT_ID)"
CurrentDb.Execute strSQL1, dbFailOnError
'Find new record and display as subform
If DLookup("CLIENT_ID", "tbl_HISTORY", "CLIENT_ID = " & Me.CLIENT_ID) Then
.CLI_HISTORY_subform.SourceObject = "frm_CLI_HISTORY"
End If
End If
End If
Case 3
' ...
Case 4
' ...
' ...
End Select
End With
DoCmd.Hourglass False
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Assuming a numeric ID, Give this a try:
strSQL = "INSERT INTO tbl_HISTORY( CLIENT_ID ) VALUES (" & Me.CLIENT_ID & ")"
CurrentDb.Execute strSQL1, dbFailOnError
strSQL = "INSERT INTO tbl_HISTORY( CLIENT_ID ) VALUES (" & Me.CLIENT_ID & ")"
CurrentDb.Execute strSQL1, dbFailOnError
ASKER
I corrected the syntax of the INSERT INTO statement, but I still get the same error message.
and make sure that the name of table and field names are correct ( do they really have underscore on the name?)
if not you have to enclosed them in square brackets []
if not you have to enclosed them in square brackets []
ASKER
Table name and field names are correct.
It says it can't find the input table ". It's like it's not even reading the table name for some reason.
It says it can't find the input table ". It's like it's not even reading the table name for some reason.
Your comment suggests you have the table name wrong in the SQL statement
'Insert a new record into in tbl_CLI_HISTORY
strSQL = "INSERT INTO tbl_HISTORY( CLIENT_ID ) VALUES (Me.CLIENT_ID)"
OM Gang
'Insert a new record into in tbl_CLI_HISTORY
strSQL = "INSERT INTO tbl_HISTORY( CLIENT_ID ) VALUES (Me.CLIENT_ID)"
OM Gang
ASKER
The comment is wrong--I've quadruple-checked the table name in the code. "tbl_HISTORY" is correct.
mkelly2384,As cap1 mentioned, the table/column names must match exactly. For example, a stray leading or trailing space in a name can muck things up.Also, please post the exact syntax you tried to use, and confirm whether CLIENT_ID is numeric or text. It would not shock me if the lack of a space between your table name and the open parenthesis for your column list upsets Access, which is why I included a space there. (SQL Server would not have "cared" about that.)Patrick
do a compact and repair
tools > database utilities > compact and repair database
then, from VBA window do
Debug > Compile
correct any errors raised
post back the result
tools > database utilities > compact and repair database
then, from VBA window do
Debug > Compile
correct any errors raised
post back the result
ASKER
I've checked the names of the table and fields 5 times now...
Shouldn't it say "Cannot find the input table "tbl_HISTORY"" instead of Cannot find the input table " (with one set of quotes only)
I did a compact and repair, but still getting the same error.
Shouldn't it say "Cannot find the input table "tbl_HISTORY"" instead of Cannot find the input table " (with one set of quotes only)
I did a compact and repair, but still getting the same error.
mkelly2384,As I asked in my last previous post:>>Also, please post the exact syntax you tried to use, and confirm whether CLIENT_ID is numeric or text.Patrick
how about the DEBUG > CoMPILE?
the CLIENT_ID is number from the codes above
If DLookup("CLIENT_ID", "tbl_HISTORY", "CLIENT_ID = " & Me.CLIENT_ID) Then
.CLI_HISTORY_subform.Sourc eObject = "frm_CLI_HISTORY"
Else
If DLookup("CLIENT_ID", "tbl_HISTORY", "CLIENT_ID = " & Me.CLIENT_ID) Then
.CLI_HISTORY_subform.Sourc
Else
ASKER
Oh sorry...CLIENT_ID is numeric.
Is there a better way to do this?
Is there a better way to do this?
Private Sub tabClients_Change()
On Error GoTo tabClients_Change_Err
Dim strSQL As String
DoCmd.Hourglass True
Application.Echo False, "Processing ..."
With Me
Select Case tabClients
Case 0 ' First TabPage (General)
' Do nothing. SourceObject loaded.
Case 1 ' Second TabPage (Academic)
'Load source objects on Academic tab
If .stuSchedule_subform.SourceObject <> "frm_STU_SCHEDULE" Then
.stuSchedule_subform.SourceObject = "frm_STU_SCHEDULE"
End If
If .academics_subform.SourceObject <> "frm_STU_ACAD" Then
.academics_subform.SourceObject = "frm_STU_ACAD"
End If
Case 2 ' Third TabPage (History)
'Find client history.
If DLookup("CLIENT_ID", "tbl_HISTORY", "CLIENT_ID = " & Me.CLIENT_ID) Then
.CLI_HISTORY_subform.SourceObject = "frm_CLI_HISTORY"
Else
'If no history is available, prompt user to add client history.
If MsgBox("No client history available. Would you like to add it now?", vbYesNo) = vbYes Then
'Insert a new record into in tbl_HISTORY
strSQL = "INSERT INTO tbl_HISTORY (CLIENT_ID) VALUES (" & Me.CLIENT_ID & ")"
CurrentDb.Execute strSQL1, dbFailOnError
'Find new record and display as subform
If DLookup("CLIENT_ID", "tbl_HISTORY", "CLIENT_ID = " & Me.CLIENT_ID) Then
.CLI_HISTORY_subform.SourceObject = "frm_CLI_HISTORY"
End If
End If
End If
Case 3
' ...
Case 4
' ...
' ...
End Select
End With
DoCmd.Hourglass False
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Decompile shows no errors.
Rather than inserting, I first tried to do something like this:
DoCmd.SelectObject "CLI_HISTORY_subform"
DoCmd.GoToRecord acActiveDataObject, , acNewRec
but that didn't work. Didn't know if I could create a new record in a subform anyway. Would that be better than inserting if it was done right?
Rather than inserting, I first tried to do something like this:
DoCmd.SelectObject "CLI_HISTORY_subform"
DoCmd.GoToRecord acActiveDataObject, , acNewRec
but that didn't work. Didn't know if I could create a new record in a subform anyway. Would that be better than inserting if it was done right?
ASKER
Yay--capricorn1--you're a genius! Thanks so much--worked perfectly.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
oh, yeah, I didn't catch that strSQL1 issue. Thanks!
with currentdb.openrecordset("t
.addnew
!Client_ID=Me.Client_ID
.update
.close 'Add this line
end with
ASKER
done. thanks.
strSQL = "INSERT INTO tbl_HISTORY( CLIENT_ID ) VALUES (" & Me.CLIENT_ID & ")"
if client_ID is Text
strSQL = "INSERT INTO tbl_HISTORY( CLIENT_ID ) VALUES ('" & Me.CLIENT_ID & "')"