2009-07-16 6 views
0

Utilisation de VB 6 et de la base de données AccessComment commander la table?

Ma requête.

Création d'une table

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 

Sélection d'un champs de la table et enregistré dans le recordset

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 

Insertion d'un champs dans la table

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 

Quand je vérifie cette requête dans la base de données d'accès - Il montre correctement, ordre par nation, titlecode comme 001, 002, 003 s o sur ..., personid, cardeventdate

Nation, personid, cardeventdate montre correctement dans le tableau tmp_MOI

Mais ne reçois pas le code de titre correctement dans le tmp_MOI tableau, il montrant titlecode dans le tableau tmp_MOI comme 001, 002, 001, 003, 002 ainsi de suite ...

Quel est le problème dans mon code, y a-t-il un problème dans mon code?

requête Besoin ou un code Aide

Répondre

0

Première - Je ne sais pas pourquoi vous auriez

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

dans l'instruction d'insertion lorsque vous insérez dans une boucle de recordset et ce faisant insérer une ligne à une fois.

Deuxième - Avez-vous le bon nombre de lignes. Se pourrait-il que vos jointures soient incorrectes de sorte que vous obteniez plusieurs rangées pour chaque titlecode? Troisièmement, si vous disposez du nombre de lignes approprié, souvenez-vous que les SGBDR sont conçus de manière à ce que l'ordre des enregistrements dans une table soit indépendant. Ainsi, si vous sélectionnez SELECT sans clause Order By, il n'y a pas de commande garantie pour les données. Ajoutez une clause Order By lorsque vous avez besoin d'afficher les données.

+0

COMMENT UTILISER ORDRE PAR '"& rsCardEvent1 (4) .Valeur &"' ", LORSQUE JE SUIS INSÉRER L'ORDRE DE VALEUR PAR, IL MONTRE L'ERREUR – Gopal

Questions connexes