Share via

Runtime Error 3061: Too few parameters. Expected 1.

Anonymous
2010-07-12T15:50:41+00:00

I am trying to run the following queris in VBA;

For intCounter = 1 To 16

strSQL = "INSERT INTO tbl_Temp_Hospitalizations (SAC_ID, ADMITTED_DATE, HOSPITAL_ID, DISCHARGED_DATE, DIAGNOSIS_ID, COMMENTS) SELECT SAC_ID, ADMIT, SITE, DISCHARGE, DIAG" & intCounter & ", DIAG_DESC" & intCounter & " FROM tbl_Hospitalization_Inpatient_Import WHERE DIAG" & intCounter & " Is Not Null"

dbs.Execute strSQL, dbFailOnError

strSQL = "UPDATE tbl_Hospitalization_Inpatient_Import INNER JOIN tbl_Temp_Hospitalizations ON (tbl_Hospitalization_Inpatient_Import.SAC_ID = tbl_Temp_Hospitalizations.SAC_ID) AND (tbl_Hospitalization_Inpatient_Import.ADMIT = tbl_Temp_Hospitalizations.ADMITTED_DATE) AND (tbl_Hospitalization_Inpatient_Import.DISCHARGE = tbl_Temp_Hospitalizations.DISCHARGED_DATE) AND (tbl_Hospitalization_Inpatient_Import.SITE = tbl_Temp_Hospitalizations.HOSPITAL_ID) SET tbl_Temp_Hospitalizations.RESPONSIBLE_DX = " & intCounter & ", tbl_Temp_Hospitalizations.DIAGNOSIS_CLASS = " & tempDiagClass & " WHERE (((tbl_Temp_Hospitalizations.DIAGNOSIS_ID)=[DIAG" & intCounter & "]));"

dbs.Execute strSQL, dbFailOnError

Next intCounter

The error occurs in the second query. I am confused because when I get the SQL statement using Debug.Print.strSQL and plug it into a normal query (ie in SQL view) it works perfectly!

I would appreciate any help you could give me.

Microsoft 365 and Office | Access | For home | Windows

Locked Question. This question was migrated from the Microsoft Support Community. You can vote on whether it's helpful, but you can't add comments or replies or follow the question.

0 comments No comments

Answer accepted by question author

Anonymous
2010-07-12T16:19:57+00:00

strSQL = "UPDATE tbl_Hospitalization_Inpatient_Import INNER JOIN tbl_Temp_Hospitalizations ON (tbl_Hospitalization_Inpatient_Import.SAC_ID = tbl_Temp_Hospitalizations.SAC_ID) AND (tbl_Hospitalization_Inpatient_Import.ADMIT = tbl_Temp_Hospitalizations.ADMITTED_DATE) AND (tbl_Hospitalization_Inpatient_Import.DISCHARGE = tbl_Temp_Hospitalizations.DISCHARGED_DATE) AND (tbl_Hospitalization_Inpatient_Import.SITE = tbl_Temp_Hospitalizations.HOSPITAL_ID)

SET tbl_Temp_Hospitalizations.RESPONSIBLE_DX = " & intCounter &  _

", tbl_Temp_Hospitalizations.DIAGNOSIS_CLASS = " & tempDiagClass & _

" WHERE (((tbl_Temp_Hospitalizations.DIAGNOSIS_ID)=[DIAG" & intCounter & "]));"

I would suspect that the problem is in the SET Clause. 

Is RESPONSIBLE _DX a number field.  You are setting its value as 1 to 16

Is DIAGNOSIS_CLASS a text field?  If so, what is the value of tempDiagClass?  If it is a string value then you need to add quotes around it.

", tbl_Temp_Hospitalizations.DIAGNOSIS_CLASS = """ & tempDiagClass & """" _


John Spencer Access MVP 2002-2005, 2007-2010 The Hilltop Institute University of Maryland Baltimore County

Was this answer helpful?

0 comments No comments

3 additional answers

Sort by: Most helpful
  1. Anonymous
    2010-07-12T17:07:51+00:00

    Hi Roger,

    Thanks for the response. I took out the square brackets to see what would happen and it didn't seem to affect the query at all. Thanks for your help.

    Was this answer helpful?

    0 comments No comments
  2. Anonymous
    2010-07-12T17:07:00+00:00

    You are correct...I missed the quotes around the tempDiagClass string! It works great! Thanks so much John

    Was this answer helpful?

    0 comments No comments
  3. Anonymous
    2010-07-12T16:36:55+00:00

    I am trying to run the following queris in VBA;

    For intCounter = 1 To 16

    strSQL = "INSERT INTO tbl_Temp_Hospitalizations (SAC_ID, ADMITTED_DATE, HOSPITAL_ID, DISCHARGED_DATE, DIAGNOSIS_ID, COMMENTS) SELECT SAC_ID, ADMIT, SITE, DISCHARGE, DIAG" & intCounter & ", DIAG_DESC" & intCounter & " FROM tbl_Hospitalization_Inpatient_Import WHERE DIAG" & intCounter & " Is Not Null"

    dbs.Execute strSQL, dbFailOnError

    strSQL = "UPDATE tbl_Hospitalization_Inpatient_Import INNER JOIN tbl_Temp_Hospitalizations ON (tbl_Hospitalization_Inpatient_Import.SAC_ID = tbl_Temp_Hospitalizations.SAC_ID) AND (tbl_Hospitalization_Inpatient_Import.ADMIT = tbl_Temp_Hospitalizations.ADMITTED_DATE) AND (tbl_Hospitalization_Inpatient_Import.DISCHARGE = tbl_Temp_Hospitalizations.DISCHARGED_DATE) AND (tbl_Hospitalization_Inpatient_Import.SITE = tbl_Temp_Hospitalizations.HOSPITAL_ID) SET tbl_Temp_Hospitalizations.RESPONSIBLE_DX = " & intCounter & ", tbl_Temp_Hospitalizations.DIAGNOSIS_CLASS = " & tempDiagClass & " WHERE (((tbl_Temp_Hospitalizations.DIAGNOSIS_ID)=[DIAG" & intCounter & "]));"

    dbs.Execute strSQL, dbFailOnError

    Next intCounter

    The error occurs in the second query. I am confused because when I get the SQL statement using Debug.Print.strSQL and plug it into a normal query (ie in SQL view) it works perfectly!

    I would appreciate any help you could give me.

    Wild shot, but what happens if you take the square brackets from around [DIAG" & intCounter & "] in the second SQL statement?

    tempDiagClass & " WHERE (((tbl_Temp_Hospitalizations.DIAGNOSIS_ID)=DIAG" & intCounter & "));"


    -- Roger Carlson

    MS Access MVP 2006-2010

    www.rogersaccesslibrary.com

    Was this answer helpful?

    0 comments No comments