Nazneen s Ответов: 1

Определите имя сотрудника при считывании RFID-карты и вставке ее в базу данных


Я уже довольно давно пытаюсь решить эту проблему, но пока ничего не добился. Моя проблема в том, что я пытаюсь вставить значения из моего поля(имя,карточка RFID,СДТ(датавремя)) на вкладку Данные и вывести отчет данных.

теперь сценарий заключается в том, что rfid-карта может быть пролистана несколько раз в течение дня сотрудником, который хранит эти данные в моей таблице администратора, и я успешно выполнил отображение и хранение полей rfid и sdt в таблице, но firstname должен быть извлечен из таблицы администратора, в которой им присваивается уникальный тег rfid в момент регистрации сотрудника.

Я пробовал соединения, несколько запросов в один, но пока ничего не получалось. запрос для хранения этих двух значений :

Что я уже пробовал:

SqlConnection con = new SqlConnection(str);
con.Open();
SqlCommand cmd = new SqlCommand("Insert into Datatab(firstname) Select Distinct firstname from Admin", con);
cmd.Parameters.AddWithValue("@firstname", txtname.Text);
//       cmd.Parameters.AddWithValue("@rfid", txtname.Text);
cmd.ExecuteNonQuery();
con.Close();

Я хочу, чтобы имя конкретного сотрудника, который проводит своей картой n раз с помощью rfid этого сотрудника, было сохранено в базе данных.

CHill60

Я думаю, что вам понадобится пункт " где " где-то там

Nazneen s

я попробовал это сделать, и это работает, если есть одно условие, но предложение where не работает, так как я не получаю данные для одного сотрудника .

1 Ответов

Рейтинг:
7

OriginalGriff

Не.
"Правильный" способ сделать это-сохранить пользовательские данные в вашей административной таблице, как и в случае с присвоенным кодом Rfid-метки. Затем, когда вы получаете свайп тега, вы сохраняете код тега в Datatab (и, вероятно, метку времени), но никакой другой информации.
Когда вы хотите получить пользовательские данные и метку времени, вы используете соединение для корреляции rfid-метки из Таблицы данных с именем пользователя из таблицы администратора.

Если вы не делаете этого таким образом, вы дублируете информацию, тратите пространство БД и потенциально создаете себе проблемы позже. Подумайте вот о чем: что делать, если пользователь меняет свое имя? В правильно спроектированной системе изменение должно быть записано в одном месте. В вашем случае есть потенциально тысячи, которые нуждаются в обновлении.


Nazneen s

я делаю это так же, как вы объяснили @originalgriff, и метка времени и тег успешно извлекаются, но имя не отображается.Итак, что мне нужно, так это получить тег имени и метку времени для отображения в отчете, и для этого мне нужен запрос, который я пытался использовать join, но тогда все имена будут отображаться иначе, просто имя будет отображаться из моего вышеприведенного запроса. вот почему мне нужна помощь.

OriginalGriff

Покажите запрос соединения, который вы использовали.

Nazneen s

Выберите admin.фамилия от админа внутреннее соединение вкладку Данные на админа.имя = вкладку Данные.имя

Вставить в вкладку Данные(RFID-меток, "имя") выберите (RFID-меток,имя) от админа внутреннее соединение вкладку Данные на админа.имя=вкладку Данные.имя

И еще много чего подобного, но пока ничего не получалось.

OriginalGriff

Ты ведь не слушал ничего из того, что я говорил, не так ли?
Посмотрите на то, что я сказал, а затем посмотрите на свой вопрос. Что вы храните в таблицах? Почему?

Nazneen s

у меня есть две таблицы Admin и Datatab.in администратор я храню все данные о сотруднике, и rfid является первичным ключом там, во второй таблице Datatab я храню тайминги, имя и метку rfid-карты этого сотрудника, чтобы определить количество раз, когда сотрудник входил и выходил из компании.

OriginalGriff

Да. Я знаю.
Вы не хотите этого делать. Прочтите, что я сказал...

Nazneen s

мне очень жаль, но, может быть, я не понимаю, что вы можете уточнить, пожалуйста?

OriginalGriff

Какую часть вы не понимаете?
Скажите мне точно, какую часть вы понимаете и где вы путаетесь, и я посмотрю, смогу ли я объяснить.

Nazneen s

часть извлечения
"Когда вы хотите получить пользовательские данные и метку времени, вы используете соединение для корреляции rfid-метки из Таблицы данных с именем пользователя из таблицы администратора."
это именно то, что я не могу сделать и не понимаю, как это сделать.

OriginalGriff

Это ясно из приведенного выше кода: Вы не используете соединение для вставки, вы используете соединение для получения информации при выборе-вы храните имя пользователя только в одном месте: в таблице администратора. Затем вы используете уникальную ссылку из таблицы datatab, чтобы "совпасть" с записью администратора, и используете соединение, связывающее их через уникальную ссылку.

Выберите D.* а.имя с вкладку Данные д
Присоединяйтесь к администратору на.RFID-меток = д.RFID-меток
Где d. RFID = theValueFromTheRFIDTag

Вы просто вставьте RFID и меток времени в вкладку Данные:

Вставить в вкладку Данные (RFID-меток, метка времени) значений (theValueFromTheRFIDTag, функции getdate())

Nazneen s

спасибо, что терпишь меня.это была моя главная проблема, и теперь я понял :" вы не используете соединение для вставки"

OriginalGriff

:большой палец вверх: