2009-07-16 47 views
0

VB 6とアクセスデータベースの使用テーブルの注文方法は?

私のクエリ。私はこのクエリをチェックすると、テーブル

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 

にフィールドを挿入するレコード

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 

にテーブルからフィールドを選択し、保存されたテーブル

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 

を作成

アクセスデータベースに - 正しく、国別に、001、002、003のようなタイトルコードを表示していますO ...、PERSONID、cardeventdate

国家、PERSONIDに、cardeventdateはtmp_MOIテーブルに正しく

を示している。しかし、それは001のようなtmp_MOIテーブルにtitlecodeを示す、tmp_MOI表で正しくタイトルコードを取得しておりません002,001,003,002など...

私のコードで何が間違っていますか、私のコードに問題はありますか?

必要性クエリまたはコードのヘルプ

答えて

0

最初に - あなたはレコードセットループに挿入し、そうで1行を挿入することにしているとき、INSERT文で

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

を持っているでしょう、なぜ私はわかりません時間。

第2 - あなたは正しい数の行を持っていますか?あなたの結合が間違っているので、各タイトルコードに複数の行が表示されますか?

第3に、適切な行数がある場合、RDBMSはテーブル内のレコードの順序が独立しているように設計されていることに注意してください。したがって、Order By節を指定せずにSELECTを実行すると、データの順序は保証されません。データを表示する必要がある場合は、Order By節を追加します。

+0

'&rsCardEvent1(4).Value&' '"を使用して注文を行う方法値の順序を挿入すると、エラーが表示される – Gopal

関連する問題