Avatar billede faithless Praktikant
23. december 2003 - 17:08 Der er 11 kommentarer og
1 løsning

sql eller sql+vba

Jeg har en tabel på ca. 500.000 records. Disse records skal sorteres og deles (eksporteres) til ca. 70 txt filer a 7000 records.

Kan man lave ovenstående kun med sql og er det smartest. Jeg er startete i sql, men hvad skriver man i sql, for at gemme et querie output.
I vba kan man med fordel bruge løkker og variabler, så det har selvfølgelig også været i mine tanker.

Hvad ville du bruge (sql el. vba+sql)og hvorfor ??
Avatar billede terry Ekspert
23. december 2003 - 17:13 #1
You dont say much about how you decide what gets exported to each text file so its hard to give a precise solution. You could use a query for each but thats a lot of queries, so it may be easier using VBA.
Avatar billede faithless Praktikant
23. december 2003 - 17:22 #2
Her er den querie som skal udskrives med forskellige WHERE. Der kommer muligvis en betingelse mere på i WHERE, men ikke i første omgang.

SELECT F0107, (F0102 & F0138), F0116, F0105, F0104, F0106, F0136, F0109, F0110, F0111, F0125, F0132, F0128, F0137, F0112
FROM Y03C
WHERE F0107=10
ORDER BY F0107, F0116, F0106, F0136, F0105, F0104;
Avatar billede trer Nybegynder
23. december 2003 - 17:26 #3
Jeg formoder at du skal bryde data op i filer udfra et eller andet fast kriterie - muligvis din sorteringsnøgle? Der er ikke nogen "eksport" funktion direkte i SQL, så jeg ville starte med at lave en simpel sorteret query, kalde den fra VBA og lade opbrydningen i separate filer foregå i VBA.

I prakisk ville jeg bygge hver fil op som en tekststreng i VBA og først skrive den til disk når der ikke skal hældes flere data i den pågældende fil.
Avatar billede terry Ekspert
23. december 2003 - 17:30 #4
faithless>Why reject the answer I gave to your question "Hvad ville du bruge (sql el. vba+sql)og hvorfor ?? "


VBA+SQL!
Avatar billede terry Ekspert
23. december 2003 - 17:31 #5
For 30 points you will have to do something yourself :o)
Avatar billede faithless Praktikant
23. december 2003 - 17:39 #6
terry> Det var ikke hensigten at afvise. Jeg kunne bare ikke finde ud af at smide en kommentar, uden at acceptere og jeg ville godt holde spørgsmålet åbent, for det kunne være der var nogle med andre idéer.
Avatar billede terry Ekspert
23. december 2003 - 17:45 #7
I may have an idea, but first I'm going to get something to eat. The solution I will suggest will require some VBA and a bit of work from you :o)
Avatar billede faithless Praktikant
23. december 2003 - 17:53 #8
terry> Jeg syntes det er sjovt, at løse problemer og det er jo også den bedste måde at lære på. Derfor er det ikke en færdig pakket løsning jeg søger, men blot nogle ideer til hvordan "eksperter" ville løse det.
Avatar billede terry Ekspert
23. december 2003 - 19:09 #9
OK, this is just an example of how it can be done.
I have a test table named tblTest with the primary key = ID

You need to make a query so that it alreay exists, this is going to get modified in code so dont worry too much about what it selects. Name the query qryToExport



Make a function in a module.

Function ExportData()
Dim sSQL As String
Dim ctr As Integer

    For ctr = 1 To 5
       
        'Build the SQL in code
        sSQL = "SELECT * FROM tblTest WHERE ID = " & ctr

        'Now modify the queries SQL
        CurrentDb.QueryDefs("qryToExport").SQL = sSQL
 
        'Just to make sure there are records to export
        If DCount("ID", "tblTest", "ID = " & ctr) > 0 Then
            'Now export the query to a text file
            DoCmd.OutputTo acSendQuery, "qryToExport", acFormatTXT, "C:\test" & ctr & ".txt"
        End If
       
    Next ctr
   
End Function

Hope you see what is happening :o)
Avatar billede terry Ekspert
23. december 2003 - 19:12 #10
In the example I use the loop counter (ctr) as the criteria in the query. If you need to use something else then you will need to find a way of finding the correct criteria for each loop. Also if you need to use another file name!
Avatar billede faithless Praktikant
23. december 2003 - 19:31 #11
terry> du får de 30 point, da du har brugt mest tid på svaret. Jeg kan bruge det VBA du har skrevet og arbejde videre ud fra det. Takker (c;
Avatar billede terry Ekspert
23. december 2003 - 19:35 #12
selv tak, og god jul :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester