2014-09-12 1 views
0

У меня есть база данных данных-фактур. Некоторые счета-фактуры имеют несколько элементов, имеющих одни и те же данные. Поскольку база данных (DBF) не имеет столбца идентификатора, я не знаю, как выбрать один элемент (строку) в счете-фактуре для изменения/update данных, потому что когда я UPDATE 1 элемент все остальные строки (имеющие те же данные, что и я, изменение).Справочная строка в базе данных, когда все строки имеют одинаковые данные (для обновления)

Dim query As String = "UPDATE INV SET DATE= ?, NAME=?, " _ 
           & "IMD=?, JM=?, WHERE INVOICENUM=? AND PRICE=? AND TAX=?" 

Могу ли я ссылаться на строку из DBF как-то так, что остальные строки с одинаковыми данными не осуществляется, и как я могу это сделать?

ответ

2

... нет ID колонки ...

Тогда как вы определяете запись? Фактическое UPDATE не структурирован таким же, независимо от того, что вы делаете:

UPDATE table SET values WHERE identity 

Вы имеете таблицу, то есть значения, то нужно идентичность. Это необязательно должно быть столбец , называемыйID, не обязательно должен быть столбец IDENTITY, который автоматически увеличивает его, это может быть любая комбинация из одного или нескольких столбцов, которая определяет одну запись как однозначно отличную от любой другой ,

Это ваши данные, вы говорите нам. Как вы распознаете одну запись из другой?

Если вы не можете различить одну запись от другой, то ваша модель данных в основном нарушена. Вам необходимо исправить это, прежде чем вы сможете продолжить. Если вы можете различить одну запись от другой, то у вас есть свой ответ. Это предложение WHERE может быть таким же сложным, каким вы хотите/оно должно быть, оно просто должно быть в состоянии идентифицировать запись.

+1

Я бы сказал, что хорошей практикой является создание уникального индекса на столбцах, образующих естественный ключ. – DaniEll

+1

@ DaniEll: Я бы пошел дальше и сказал, что натуральный ключ должен быть главным ключом, в идеале. Который приходит с уникальным индексом уже :) – David

+0

Нет никакого столбца идентификации любого типа, файлы DBF из моего старого программного обеспечения, и я не могу связаться с парнем, который запрограммировал это. Программное обеспечение было создано в DBASE и полностью функционально. Я пытаюсь добавить некоторые из них с VB.NET, чтобы ускорить некоторые процессы. Я помещаю данные счета в список и выбираю из него один элемент, чтобы я мог видеть данные, которые я пытаюсь изменить, проблема начинается, когда у меня есть идентичные элементы в счете-фактуре, и я надеялся решить это с номером строки DBFfile как ИДЕНТИФИКАЦИЯ. – Jovica