[VBA/SQL] MS ACCESS toepassing +2 DoCmd.RunSQL naar 1 DoCmd

Pagina: 1
Acties:
  • 101 views sinds 30-01-2008
  • Reageer

  • logic00
  • Registratie: Mei 2007
  • Laatst online: 10-10 10:20
Het is de bedoeling om verschillende DoCmd's in ACCESS te herleiden naar 1 DoCmd. Momenteel worden er 5 queries gedraaid die elk redelijk veel tijd in beslag nemen. Ik zou dit willen herleiden naar 1 query die wordt gedraaid.

5 keer een datatabel doorlopen om een UPDATE te doen, tegen 1x lijkt mij toch dat het iets sneller moet gaan.
In dit geval is het de bedoeling om het gegevenstype van de kolommen aan te passen. Dit gaat eigenlijk nog snel. Maar daarnaast moeten er nog andere updates gebeuren die wel meer tijd vergen.

code:
1
DoCmd.RunSQL "ALTER TABLE [DATA] ALTER COLUMN [DATE] TEXT(8) & ALTER COLUMN [DATE2] TEXT(8) & ALTER COLUMN [DATE3] TEXT(8) & ALTER COLUMN [DATE4] TEXT(8) & ALTER COLUMN [DATE5] TEXT(8)"


De error die ik krijg is dat er een fout zit in mijn ALTER TABLE.

Ik ben nog niet lang bezig met coderen hoor.
Dat is er misschien wel aan te zien ;-)

Kan iemand me helpen aub?

Verwijderd

een update en een alter zijn 2 verschillende dingen
waarom bespaar je je de moeite niet en wijzig je de database niet in access zelf zonder SQL statements

http://www.techonthenet.com/sql/tables/alter_table.php is de syntax van ALTER, zo te zien mis jij wel wat

ALTER TABLE [DATA] ALTER MODIFY COLUMN [DATE] bv ?

[ Voor 200% gewijzigd door Verwijderd op 18-05-2007 16:39 . Reden: lama ]


  • logic00
  • Registratie: Mei 2007
  • Laatst online: 10-10 10:20
Ik verwar momenteel met de UPDATE functie idd.

Even schetsen wat ik al heb:
Ik heb een full automatisch importproces. Elke week dienen er 5 TXT-files van om en bij de 15 MB opgeladen te worden in ACCESS. Hierin worden de datums weergegeven als YYYYMMDD en er zijn datumwaardes bij die ongeldig zijn "00000000". De data komt uit een SAP systeem. Het is echter zo dat dit allemaal in 1 proces zit (1 knop).

1. alter column datum1, datum2, datum3, datum4 als datatype: tekst.
2. import data (met de datums als tekst (datatype: tekst) dus) de 5 files worden automatisch opgepikt op een specifieke locatie.
3. alter table add 4 temp_kolommen, tekst.
4. update de temp_kolommen met een functie right, '/', mid, '/', left om de datums correct te verwerken.
5. update set [datum1]=null etc. etc. (de oorspronkelijke datumkolommen worden dus leeggemaakt)
6. alter table alter column date (datatype van de oorspronkelijke kolommen wijzigen van tekst naar datum)
7. update set [datum1]=[temp datum1]
8. en dan nog een delete van de temp datumkolommen zodat ik dus mijn oorspronkelijke waardes zie.

Vervolgens wordt de database gecomprimeerd en als ACCES opnieuw geopend is, is mijn handeling afgelopen.

Dit zijn 8 (zelfs 9) stappen. Voor elke datumkolom moet ik deze 8 stappen en dus 8 queries doorlopen dewelke heel veel tijd in beslag nemen gezien de hoeveelheid data. 8*4 = 32 queries.

Daarom vroeg ik mij af of ik de 32 queries niet kon herleiden naar 8 queries ;-) als ik een DoCmd alter table kon doen voor meerdere datumkolommen tegelijkertijd. Volgens mij gaat dat wel met een soortgelijke methode als '&'

Misschien is er nog een gemakkelijkere manier?

PS: De datums ombouwen is noodzakelijk aangezien we ermee moeten kunnen rekenen.

[ Voor 6% gewijzigd door logic00 op 18-05-2007 16:58 ]


  • logic00
  • Registratie: Mei 2007
  • Laatst online: 10-10 10:20
FIX, alter of modify => beiden werken (in VBA for ACCESS).

  • Boss
  • Registratie: September 1999
  • Laatst online: 01-12 16:27

Boss

+1 Overgewaardeerd

Waarom pas je de importspecificatie niet aan zodanig dat de datum op de juiste manier wordt verwerkt bij het importeren? Je kan toch precies opgeven hoe een datumveld is opgemaakt?

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • logic00
  • Registratie: Mei 2007
  • Laatst online: 10-10 10:20
Dit gaat voor alle kolommen waarbij de datum geldig is. Er zijn kolommen waarbij niet alle velden een datum hebben en in de TXT files wordt dit weergegeven als 00000000. Hier struikelt hij over en slaat hij de volledige kolom over.

Maar idd, dit had wel kunnen werken in geval alle datumkolommen als geldige datums aanzien konden worden.

[ Voor 12% gewijzigd door logic00 op 18-05-2007 19:01 ]


  • logic00
  • Registratie: Mei 2007
  • Laatst online: 10-10 10:20
Op de volgende link vind je misschien een duidelijkere schets van het probleem :-)
http://forum.seclan.be/in...id=41276&st=0&#entry41275
Pagina: 1