Я не верю, что объект sqlexception содержит данные, которые вы ищете. Он содержит имя ключа в тексте ошибки, но не имеет значений внутри него. SQL-сервер не передает эту информацию обратно в VB для использования.
Одним из способов получения значений первичного ключа является сохранение этих данных в переменных ранее в программе (которые вы, вероятно, уже имеете) и использование этих переменных при создании сообщения об ошибке.
Возможно, есть и другие способы. Если вы предоставите больше кода перед этим разделом, мы сможем помочь вам больше. Если это предложение не соответствует вашим потребностям, дайте мне знать, каковы недостатки, и мы можем пойти дальше.