Avatar billede rickie Juniormester
15. september 2005 - 13:43 Der er 9 kommentarer og
1 løsning

Gemme i Access tabell men hente data i SQL fra Access

Hej allesammen,

Jeg har en kobbling mod en SQL database fra Access.
Mit spm er om det er muligt at feks oprette ett felt i en form (kundenr) og når man så taster kundenr ind så henter den adresseoplysningerne fra SQL databasen og derefter gemmer de data som passer till kunden i en tabell i Access?

Det er for at kunne lave et udvalg af kunder hvor der skal printes labels. Som det er idag så skriver vi det hele manuelt ind i Accessdatabasen og det tar lang tid.

Selve kobblingen till SQL databasen fra Access er ellerede oppe, men jeg ved bare ikke om det er muligt i formen idet det nok skal være en slags opslag/søge funktion.
Avatar billede terry Ekspert
15. september 2005 - 13:55 #1
If you have an ODBC (DSN) connection to SQL Server then you will have a linked table in your Access database.

You can then add a combo box to a form which shows your Kundenr.

Now make an append query which selects records from your SQL table and inserts them into your Access table. In the criteria field for kundenr you now make a reference to the combo box on the form so that the append query only selects the record for the kundenr you have selected in the combo.

The criteria will look something like this.

[forms]![THisIsTheFormName]![ThisIsTheComboName]
Avatar billede kjulius Novice
16. september 2005 - 03:00 #2
Som terry siger, så er du nødt til at knytte din Kundetabel fra SQL serveren til din Access database via en ODBC kobling.

Når du har gjort det, kan resten gøres på mange måder. Måske vil andre synes, at min metode er lidt omstændelig. Til det kan jeg kun sige: Tja, men det er nu den måde jeg ville gøre det på. Især fordi du siger, du gerne vil kunne indtaste kundenumrene.
Så her er min opskrift...

Jeg forudsætter at du har to tabeller (Kunder, som er den tabel som ligger fysisk på SQL server, og Labels som ligger fysisk i Access).

1) Opret en form med Guide funktionen og vælg Labels tabellen.
2) Rediger den oprettede form.
3) I formens VedAktivering tilføjes:
Private Sub Form_Activate()
    txtKundenr.SetFocus
End Sub
4) Formularens egenskab Tillad tilføjelser sættes til Nej
5) I header sektionen tilføjes et ubundet indtastningsfelt som kaldes txtKundenr.
6) Ligeledes i header sektionen placeres en kommandoknap som kaldes cmdTilføj
7) Knappen egenskab Standardknap sættes til Ja.
8) På knappens klik-event tilføjes:
Private Sub cmdTilføj_Click()
    Dim SQL As String
    If Not IsNull(DLookup("Kundenr", "Kunder", "Kundenr=txtKundenr")) Then
        SQL = "INSERT INTO Labels ([Kundenr], [Navn], [Adresse], [Postnr], [By])" & vbCrLf & _
            "SELECT [Kundenr], [Kundenavn], [Kundeadresse], [Kundepostnr], [Kundeby]" & vbCrLf & _
            "FROM Kunder WHERE Kundenr = " & txtKundenr.Value
        CurrentDb.Execute (SQL)
        Me.Requery
    Else
        MsgBox "Kundenr. " & txtKundenr & " kendes ikke", vbExclamation
    End If
    txtKundenr = ""
    txtKundenr.SetFocus
End Sub

Du kan naturligvis kalde dine felter hvad du vil. Grunden til at jeg angiver et feltnavn er bare, at det jo skal passe med den angivne kode. Så hvis du bare passer på, at der er sammenhæng mellem feltnavne og kode er du frit stillet mht. at bruge dine egne navne.

I stedet for tekstfeltet kunne du også benytte en komboliste, sådan som terry foreslår. Denne kunne du så knytte til din Kunde tabel. Dermed ville du have mulighed vor at vælge et kontonummer fra en liste i tillæg til at indtaste nummeret selv. Du kan jo selv eksperimentere med det...
Avatar billede rickie Juniormester
16. september 2005 - 07:59 #3
Hej! Tak for svaren! Jeg når desværre ikke at kigge på det idag. Combobox er udelukket da der er ca. 200.000 kunder i databasen så det skal nok være noget lignende det du skriver Kjulius!

Ha en god weekend! :-)
Avatar billede terry Ekspert
16. september 2005 - 08:53 #4
well another idea would be to have an extra field (yes/no) in your kunde table. This will then allow you to have a checkbox on your form where you can select the kunde you want to print out.

Now you have a query which selects only the records which you have selected.
And if you dont want to have an extra field then just have a table in Access which contains the kunde primary key and a yes/no field.
Now you can make a relationship to your kunde table in SQL and do the same.
Ja, der er mange måder!
Avatar billede kjulius Novice
16. september 2005 - 10:48 #5
I forbindelse med min "opskrift" er der i punkt 7 forsvundet et bogstav, som kan være meningsforstyrrende. Det burde være:

7) Knappens egenskab Standardknap sættes til Ja.

Utroligt, at et manglende s kan give en sætning en helt anden betydning. :-)
Avatar billede rickie Juniormester
20. september 2005 - 08:47 #6
Undskyld det sene svar!

Jeg har kigget på det og kan ikke få det til at virke. Har prøvet at følje din anvisning til punkt og prikke. Nu er det sådan at jeg også har Access på engelsk, men umiddelbart burde det jo ikke volde de store problemer.

Er det sådan at jeg kan lokke dig til at lave selve formen og labelstabellen så at jeg kan se hvordan det skal se ud? Det er såmænd ikke fordi jeg ikke gider men fordi jeg ikke kan få det til at virke og jeg er ved at få grå hår :-)
Jeg vil jo så kunne se hvordan du har lavet det!

Jeg ved godt at det "skal" foregå på eksperten men hvis der opstår et problem burde det vel være tiladt at lave det per mail, når bare resultatet postes her, eller?
Min mailadresse er: rickie.grayholm@telia.com (Privat. Kan jeg modtage filer) eller rickie.grayholm@thorn.no (Arb. Kan jeg ikke modtage filer - dog .txt)

Håber på hjælp!
Avatar billede kjulius Novice
20. september 2005 - 21:36 #7
Jeg har sendt en zippet database til din hjemadresse. Håber du kan bruge det...
Avatar billede rickie Juniormester
21. september 2005 - 09:07 #8
Hej,

Tak for det! Det var lige precis det jeg skulle bruge. Du fortjener virkelig dine points :-)
Avatar billede rickie Juniormester
21. september 2005 - 09:07 #9
Svar for points :-)
Avatar billede kjulius Novice
21. september 2005 - 18:13 #10
Det var da godt du ku' bruge det... :-)
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