Perhaps the best explanation is to show you some SQL statements that I used to create a custom table attached to the payroll employee screen (a sample is sometimes worth a thousand words). if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[xEmployeeExt]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) BEGIN PRINT 'Dropping table: xEmployeeExt' DROP TABLE [dbo].[xEmployeeExt] END Go CREATE TABLE xEmployeeExt ( EmpId CHARACTER (10) NULL DEFAULT (' '), CellNbr CHARACTER (20) NULL DEFAULT (' '), Email CHARACTER (50) NULL DEFAULT (' '), EmergencyContact CHARACTER (50) NULL DEFAULT (' '), ContactNbr CHARACTER (30) NULL DEFAULT (' '), TerminationReason CHARACTER (50) NULL DEFAULT (' '), Rehire CHARACTER (30) NULL DEFAULT (' '), tstamp timestamp NOT NULL ) GO IF EXISTS (SELECT * FROM sysindexes WHERE name = 'xEmployeeExt0') BEGIN PRINT 'Dropping index: xEmployeeExt0' DROP INDEX xEmployeeExt.xEmployeeExt0 END Go PRINT 'Creating index xEmployeeExt0' Go Create Index xEmployeeExt0 on xEmployeeExt ([EmpID]) Go PRINT 'Index: xEmployeeExt0 created successfully' Go You will see that I created an index on the xEmployeeExt table. The 0 index must refer to a unique field or fields that uniquely identifies one record in the table. As for you compile error on the form_load event, without the text of the code you added, I cannot tell what is causing the error. However, here is the code I added to the payroll employee screen for the new custom table xEmployeeExt. Private Sub cEmpID_Chk(ChkStrg As String, retval As Integer) Dim GetxEmployeeExt As Integer Dim SqlStr As String If Trim(ChkStrg) "" Then SqlStr = "SELECT * FROM xEmployeeExt WHERE EmpID = " + SParm(Trim(ChkStrg)) GetxEmployeeExt = SqlFetch1(Csr_xEmployeeExt, SqlStr, bxEmployeeExt, LenB(bxEmployeeExt)) If GetxEmployeeExt = NOTFOUND Then FoundXtra = False bxEmployeeExt = nxEmployeeExt Else FoundExt = True End If End If Call DispFields("form1", "") End Sub Private Sub Update1_OnDelete(level As Integer, retval As Integer) Dim Empid As String * 10 Dim SqlStr As String If level = LEVEL0 Then Empid = GetObjectValue("cempid") SqlStr = "Delete from xEmployeeExt where Empid = " & SParm(Empid) Call TranBeg(True) Call sql(Csr_xEmployeeExt, SqlStr) Call TranEnd Call SqlFree(Csr_xEmployeeExt) End If End Sub Private Sub Update1_OnUpdate(level As Integer, insertflg As Integer, retval As Integer) If level = Finished Then Call TranBeg(True) If FoundExt Then 'update existing Call SUpdate1(Csr_xEmployeeExt, "xEmployeeExt", bxEmployeeExt, LenB(bxEmployeeExt)) Else bxEmployeeExt.Empid = GetObjectValue("cEmpId") Call SInsert1(Csr_xEmployeeExt, "xEmployeeExt", bxEmployeeExt, LenB(bxEmployeeExt)) End If Call TranEnd End If End Sub Private Sub Form1_Display() End Sub '$include: "xEmployeeExt.dh" Private Sub Form1_Load() Call VBA_SetAddr("bxEmployeeExt", bxEmployeeExt, nxEmployeeExt, LenB(bxEmployeeExt)) Call SqlCursorEx(Csr_xEmployeeExt, NOLEVEL + SqlUpdate, "Csr_xEmployeeExt", "xEmployeeExt", "xEmployeeExt") End Sub
↧