У меня была такая же проблема с моей базой данных mysql, но в конце концов я получил решение, которое сработало для меня. Поскольку в моей таблице все было в порядке с точки зрения mysql (обе таблицы должны использовать движок Innodb, а тип данных каждого столбца должен быть того же типа, который принимает участие в ограничении внешнего ключа). Единственное, что я сделал, это отключить проверку внешнего ключа, а затем включить его после выполнения операции с внешним ключом. Шаги, которые я взял:
blockquote>mysql> SET foreign_key_checks = 0; mysql> alter table tblUsedDestination add constraint f_operatorId foreign key(iOperatorId) references tblOperators (iOperatorId); Query OK, 8 rows affected (0.23 sec) Records: 8 Duplicates: 0 Warnings: 0 mysql> SET foreign_key_checks = 1;
Попробуйте нижеприведенное (в коде есть примечания). Если вы столкнулись с трудностями, дайте мне знать.
Option Explicit
Sub test()
'In this example we assume that the data you want to loop appear in Column A
Dim i As Long, Lastrow As Long
Dim Checkpoint As Variant
With ThisWorkbook.Worksheets("Sheet1") '<- Change sheet name if needed
Lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row '< -Fins the lastrow of the column you want to loop
For i = 2 To Lastrow ' < -Start looping from row 2 to Lastrow fo the column
If .Range("A" & i).Offset(0, 1).Value <> 0 Then '<- You are looping
If .Range("A" & i).Value <> "X" Then
.Range("A" & i).Offset(0, 1).Value = .Range("A" & i).Offset(0, 1).Value - 1
.Range("A" & i).Value = .Range("A" & i).Value & "X"
Checkpoint = .Range("A" & i).Address
Else
.Range("A" & i).Value = ""
End If
Else
.Range("A" & i).Value = ""
End If
Next i
End With
End Sub