Brogrim
asked on
Multiple lines in VBA
I am trying to split vba lines of code
The problem is in the VBA Editor it wont allow that many characters and when i do split the lines as follows
I get the following highlighted and an error message
![txt_Archived_DDAIID]
Compile Error
Sub or Function not Defined
INSERT INTO tblddai ( DDAIID, DDAI_TitleID, PermitApplicantSourseID, DDAIStatusID, DateEntered, SName, CName, Addres1, Addres2, Addres3, CountyID, DOB, Disability, DiagnosticCodeID, PrimMedCert, Photo, Signature, Phone, Mobile, email, DDAID_UserID, DDAI_ConditionID, DDAI_CriteriaID, GenderID )
SELECT deleted_ddaiid.DDAIID, deleted_ddaiid.DDAI_TitleID, deleted_ddaiid.PermitApplicantSourseID, deleted_ddaiid.DDAIStatusID, deleted_ddaiid.DateEntered, deleted_ddaiid.SName, deleted_ddaiid.CName, deleted_ddaiid.Addres1, deleted_ddaiid.Addres2, deleted_ddaiid.Addres3, deleted_ddaiid.CountyID, deleted_ddaiid.DOB, deleted_ddaiid.Disability, deleted_ddaiid.DiagnosticCodeID, deleted_ddaiid.PrimMedCert, deleted_ddaiid.Photo, deleted_ddaiid.Signature, deleted_ddaiid.Phone, deleted_ddaiid.Mobile, deleted_ddaiid.email, deleted_ddaiid.DDAID_UserID, deleted_ddaiid.DDAI_ConditionID, deleted_ddaiid.DDAI_CriteriaID, deleted_ddaiid.GenderID
FROM deleted_ddaiid
WHERE (((deleted_ddaiid.DDAIID)=[Forms]![frmDDAI_SB]![txt_Archived_DDAIID]));
The problem is in the VBA Editor it wont allow that many characters and when i do split the lines as follows
DoCmd.RunSQL "INSERT INTO tblddai ( DDAIID, DDAI_TitleID, PermitApplicantSourseID, DDAIStatusID, DateEntered, SName, CName, Addres1, Addres2, Addres3, CountyID, DOB, Disability, DiagnosticCodeID, PrimMedCert, Photo, Signature, Phone, Mobile, email, DDAID_UserID, DDAI_ConditionID, DDAI_CriteriaID, GenderID ) SELECT deleted_ddaiid.DDAIID, deleted_ddaiid.DDAI_TitleID, deleted_ddaiid.PermitApplicantSourseID, deleted_ddaiid.DDAIStatusID, deleted_ddaiid.DateEntered, deleted_ddaiid.SName, deleted_ddaiid.CName, deleted_ddaiid.Addres1, deleted_ddaiid.Addres2, deleted_ddaiid.Addres3, deleted_ddaiid.CountyID, deleted_ddaiid.DOB, deleted_ddaiid.Disability, deleted_ddaiid.DiagnosticCodeID, deleted_ddaiid.PrimMedCert, deleted_ddaiid.Photo, deleted_ddaiid.Signature, deleted_ddaiid.Phone, deleted_ddaiid.Mobile, deleted_ddaiid.email, deleted_ddaiid.DDAID_UserID, deleted_ddaiid.DDAI_ConditionID, deleted_ddaiid.DDAI_CriteriaID, deleted_ddaiid.GenderID FROM deleted_ddaiid " [b]_
&[/b] WHERE(((deleted_ddaiid.DDAIID) = [Forms]![frmDDAI_SB]![txt_Archived_DDAIID]))
I get the following highlighted and an error message
![txt_Archived_DDAIID]
Compile Error
Sub or Function not Defined
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Note also you can build up the string:
strSQL = "INSERT...."
strSQL = strSQL & " FROM...."
strSQL = strSQL & " WHERE..."
in which case, no line continuation characters.
Jim.
strSQL = "INSERT...."
strSQL = strSQL & " FROM...."
strSQL = strSQL & " WHERE..."
in which case, no line continuation characters.
Jim.
Listen to Jim. But you also need proper quotes:
" .... FROM deleted_ddaiid " & _
"WHERE(((deleted_ddaiid.DD AIID) = [Forms]![frmDDAI_SB]![txt_ Archived_D DAIID]))"
/gustav
" .... FROM deleted_ddaiid " & _
"WHERE(((deleted_ddaiid.DD
/gustav
1. Since you are selecting the source data from deleted_ddaiid, you might be able to shorten your SQL by dropping the table name qualifier.
2. Since the source and destination table fields seem to be the same, you might shorten the SQL as
3. You could store your SQL in a database table or other external source.
4. You could create a routine to create your SQL string by iterating the source/target fields or a field-mapping table.
5. I concur with Jim about not invoking the RunSQL method. However, my preference is
INSERT INTO tblddai ( DDAIID, DDAI_TitleID, PermitApplicantSourseID, DDAIStatusID, DateEntered, SName, CName, Addres1, Addres2, Addres3, CountyID, DOB, Disability, DiagnosticCodeID, PrimMedCert, Photo, Signature, Phone, Mobile, email, DDAID_UserID, DDAI_ConditionID, DDAI_CriteriaID, GenderID )
SELECT DDAIID, DDAI_TitleID, PermitApplicantSourseID, DDAIStatusID, DateEntered, SName, CName, Addres1, Addres2, Addres3, CountyID, DOB, Disability, DiagnosticCodeID, PrimMedCert, Photo, Signature, Phone, Mobile, email, DDAID_UserID, DDAI_ConditionID, DDAI_CriteriaID, GenderID
FROM deleted_ddaiid
WHERE (((deleted_ddaiid.DDAIID)=[Forms]![frmDDAI_SB]![txt_Archived_DDAIID]));
2. Since the source and destination table fields seem to be the same, you might shorten the SQL as
INSERT INTO tblddai
SELECT *
FROM deleted_ddaiid
WHERE (((deleted_ddaiid.DDAIID)=[Forms]![frmDDAI_SB]![txt_Archived_DDAIID]));
Note: This isn't a best practice.3. You could store your SQL in a database table or other external source.
4. You could create a routine to create your SQL string by iterating the source/target fields or a field-mapping table.
5. I concur with Jim about not invoking the RunSQL method. However, my preference is
dbEngine(0)(0).Execute strSQL
ASKER
straight forward answer that resolved the problem
Do it like this:
Dim strSQL as string
strSQL = "INSERT INTO tblddai ( DDAIID, DDAI_TitleID, PermitApplicantSourseID, DDAIStatusID, DateEntered, SName, CName, Addres1, Addres2, Addres3, CountyID, DOB, Disability, DiagnosticCodeID, PrimMedCert, Photo, Signature, Phone, Mobile, email, DDAID_UserID, DDAI_ConditionID, DDAI_CriteriaID, GenderID ) SELECT deleted_ddaiid.DDAIID, deleted_ddaiid.DDAI_TitleI
& " WHERE(((deleted_ddaiid.DDA
DoCmd.RunSQL strSQL
This lets you put a breakpoint on the DoCmd and inspect the SQL statement that is about to be executed. Nice way to pin-point problems.
2. Don't use runsql. You can't trap errors with it. Instead, use:
CurrentDB().Execute strSQL, dbFailOnError
Jim.