2016-08-25 2 views
0

Ниже код работал хорошо, пока я не добавил код для vbokcancel сразил ... код ниже:VBA Если Постулаты путаница

If Me.results.ListIndex = -1 Or Me.userfolder.ListIndex = -1 Or 
Me.choice.ListIndex = -1 Then   

MsgBox "Please choose something to remove" 

Else 

If MsgBox("Are you sure you want to delete this user from this folder?", vbOKCancel) = vbOK Then 

    If Me.choice.Value = "Folder" Then 

     username = Me.results.Column(0) 
     prfolder = Me.results.Column(3) 

     strSQL = "DELETE tblRelationship.*, tblPra.praNo, tblFolder.folder FROM tblPra INNER JOIN (tblFolder INNER JOIN tblRelationship ON tblFolder.folderID = tblRelationship.folderID) ON tblPra.praID = tblRelationship.praID WHERE (((tblPra.praNo)='" & username & "') AND ((tblFolder.folder)='" & prfolder & "'));" 
     CurrentDb.Execute strSQL 
     Me.results.Requery 

    ElseIf Me.choice.Value = "Username" Then 

     prfolder = Me.results.Column(0) 

     strSQL = "DELETE tblRelationship.*, tblFolder.folder FROM tblPra INNER JOIN (tblFolder INNER JOIN tblRelationship ON tblFolder.folderID = tblRelationship.folderID) ON tblPra.praID = tblRelationship.praID WHERE (((tblFolder.folder)='" & prfolder & "'));" 
     CurrentDb.Execute strSQL 
     Me.results.Requery 

    End If 
    End If 
End If 

Он активирует раздел If MsgBox("Are you sure you want to delete this user from this folder?", vbOKCancel) = vbOK, но если кнопка «ОК» щелкнул пропускает прямо до End If и не запускает код внутри оператора IF. Теперь я подумал, что то, что я сделал, было совершенно «правовым» в кодировании, по-видимому, не ... какие-то идеи, что я сделал, чтобы испортить?

Если вы нажмете «Отмена», он сделает то, что я уже хочу, чтобы закрыть окно сообщения, и пользователь возвращается на тот же экран. Поэтому нет необходимости в заявлении Else, потому что он уже делает то, что Я хочу, чтобы это произошло.

+2

Элемент 'If MsgBox' выглядит нормально. Вы уверены, что это не строки 'If Me.choice.Value = ..', которые не работают? Добавьте строку 'MsgBox 'Нажмите ОК" 'непосредственно после вопроса. – Andre

+0

Привет, я добавил это, и он все еще пропускает второй «Конец If», не показывая «Clicked Ok» –

+0

Хмм. Это ваш оригинальный код или вы что-то изменили, когда вы разместили вопрос? Попробуйте это в окне Immediate (Ctrl + G): 'Если MsgBox (« Вы уверены, что хотите удалить этого пользователя из этой папки? », VbOKCancel) = vbOK Затем MsgBox« Нажмите ОК »' - он должен показать второй MsgBox, если вы нажмете OK. – Andre

ответ

1

Это слишком длинный комментарий, и на самом деле это не ответ, но он должен вести вас в правильном направлении.

Попробуйте установить значение окна сообщения равным переменной. Что-то вроде этого:

If Me.results.ListIndex = -1 Or Me.userfolder.ListIndex = -1 Or 
Me.choice.ListIndex = -1 Then   

MsgBox "Please choose something to remove" 

Else 

    X = MsgBox("Are you sure you want to delete this user from this folder?", vbOKCancel) 

    If X = vbOK Then 'put a breakpoint here 

     If Me.choice.Value = "Folder" Then 

      username = Me.results.Column(0) 
      prfolder = Me.results.Column(3) 

      strSQL = "DELETE tblRelationship.*, tblPra.praNo, tblFolder.folder FROM tblPra INNER JOIN (tblFolder INNER JOIN tblRelationship ON tblFolder.folderID = tblRelationship.folderID) ON tblPra.praID = tblRelationship.praID WHERE (((tblPra.praNo)='" & username & "') AND ((tblFolder.folder)='" & prfolder & "'));" 
      CurrentDb.Execute strSQL 
      Me.results.Requery 

     ElseIf Me.choice.Value = "Username" Then 

      prfolder = Me.results.Column(0) 

      strSQL = "DELETE tblRelationship.*, tblFolder.folder FROM tblPra INNER JOIN (tblFolder INNER JOIN tblRelationship ON tblFolder.folderID = tblRelationship.folderID) ON tblPra.praID = tblRelationship.praID WHERE (((tblFolder.folder)='" & prfolder & "'));" 
      CurrentDb.Execute strSQL 
      Me.results.Requery 

     End If 
    End If 

End If 

Затем проверьте значение X и посмотрите, что, по его мнению, X равно. Это должно дать вам представление о том, почему блок кода If/Then не работает.

+0

Он думает, что X равно 1, что, к сожалению, не объясняет (мне все равно), почему он проскакивает до конца, если! –

+0

Вы пытались изменить ** Если X = vbOK ** to ** Если X = 1 **? Или, в вашем исходном коде, измените ** Если MsgBox («Вы уверены, что хотите удалить этого пользователя из этой папки?», VbOKCancel) = vbOK ** to ** Если MsgBox («Вы уверены, что хотите удалить это пользователя из этой папки? ", vbOKCancel) = 1 ** и посмотреть, будет ли он действовать по желанию. Тем не менее, я сначала проверил значения как OK, так и Cancel, чтобы увидеть, что X считает, что они есть, а затем соответствующим образом измените оригинал (или мою версию). –

+0

Ok change 'If X = vbOK Then' to' If X = 1 Then' наконец-то сделал это так, как я хочу, чтобы он это сделал. Большое спасибо! Это кажется таким очевидным сейчас. –

Смежные вопросы