Как заказать столик? - PullRequest
       7

Как заказать столик?

0 голосов
/ 16 июля 2009

Использование VB 6 и базы данных Access

Мой запрос.

Создание таблицы

sql4 = "CREATE TABLE tmp_MOI (RECORDNO varchar(20), PERSONID varchar(20), EmpName varchar(50), TitleName varchar(50), Titlecode varchar(50), Department varchar(50), Nation varchar(50), CardEventDate varchar(50), Intime varchar(20), Outtime varchar(20), PrevDate varchar(50), PrevOut varchar(20))"
If rstmpCardEvent1.State = 1 Then rstmpCardEvent1.Close
rstmpCardEvent1.Open sql4, Cn, adOpenStatic, adLockOptimistic

Выбор полей из таблицы и сохранение в наборе записей

sql9 = "SELECT RECORDNO, PERSONID, EMPNAME, TITLENAME, TITLECODE, DEPARTMENT, NATION, CARDEVENTDATE, INTIME, OUTTIME, (select TOP 1 F1.CARDEVENTDATE  from tmp_cardevent as F1 where F1.RECORDNO < F2.RECORDNO  AND F1.PERSONID = F2.PERSONID order by F1.RECORDNO  DESC, F1.PERSONID DESC) AS PrevDate, (select TOP 1 F1.OUTTIME  from tmp_cardevent as F1 where F1.RECORDNO < F2.RECORDNO  AND F1.PERSONID = F2.PERSONID order by F1.RECORDNO  DESC, F1.PERSONID DESC) AS PrevOut FROM tmp_cardevent  AS F2 ORDER BY F2.NATION, F2.TITLECODE, F2.PERSONID, F2.CARDEVENTDATE"
If rsCardEvent1.State = 1 Then rsCardEvent1.Close
rsCardEvent1.Open sql9, Cn, adOpenStatic, adLockOptimistic
cmdcardevent1.CommandText = sql9
Set rsCardEvent1 = cmdcardevent1.Execute

Вставка полей в таблицу

While Not rsCardEvent1.EOF

sql10 = "INSERT INTO tmp_MOI values('" & rsCardEvent1(0).Value & "' , '" & rsCardEvent1(1).Value & "', '" & rsCardEvent1(2).Value & "', '" & rsCardEvent1(3).Value & "', '" & rsCardEvent1(4).Value & "', '" & rsCardEvent1(5).Value & "', '" & rsCardEvent1(6).Value & "', '" & StringToDate(rsCardEvent1.Fields(7).Value) & "', '" & rsCardEvent1.Fields(8).Value & "', '" & rsCardEvent1.Fields(9).Value & "', '" & StringToDate(rsCardEvent1.Fields(10).Value) & "', '" & StringToTim(rsCardEvent1(11).Value) & "') ORDER BY '" & rsCardEvent1(4).Value & "'"
If rstmpCardEvent1.State = 1 Then rstmpCardEvent1.Close
rstmpCardEvent1.Open sql10, Cn, adOpenStatic, adLockOptimistic
rsCardEvent1.MoveNext

Wend

Когда я проверяю этот запрос в базе данных доступа - он правильно отображается, упорядочен по нации, код заголовка, например 001, 002, 003 и т. Д., Personid, cardeventdate

Nation, personid, cardeventdate правильно отображается в таблице tmp_MOI

Но я не получаю код заголовка должным образом в таблице tmp_MOI, он показывает код заголовка в таблице tmp_MOI, такой как 001, 002, 001, 003, 002 и так далее ...

Что плохого в моем коде, есть ли проблемы в моем коде?

Нужен запрос или код Помощь

1 Ответ

0 голосов
/ 16 июля 2009

Во-первых - я не уверен, почему у вас будет

ORDER BY '" & rsCardEvent1(4).Value & "'"

в операторе Insert при вставке в цикл набора записей и при этом вставке по одной строке за раз.

Второй - у вас есть правильное количество строк. Может быть, ваши объединения неверны, и вы получаете несколько строк для каждого titlecode?

В-третьих, если у вас правильное количество строк, помните, что СУБД спроектированы так, чтобы порядок записей в таблице был независимым. Таким образом, если вы ВЫБЕРИТЕ без предложения Order By, не существует гарантированного порядка для данных. Добавьте предложение Order By, когда вам нужно просмотреть данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...