18. august 2004 - 11:11Der er
11 kommentarer og 1 løsning
INSERT i 2 tabeller med et relateret felt skaber problemer
Hej
Jeg har et problem med en form der skal gemmes i 2 tabeller, hvor den ene tabel refererer til den anden.
Altså der oprettes først data i tabellen kunde hvorefter at der opettes data i tabellen kontakt. Jeg har derfor brug for kundeId fra tabellen kunde til at sætte ind i tabellen kontakt for at kontaktpersonen kan refereres til kunden. Det bør nævnes at telefonnr er oprettet som variabel tidl. i koden.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
fennec: Tak. Det var lige det jeg søgte. Vil en sådan forespørgsel kunne skabe problemer / være "teknisk forkert" da der ikke refereres direkte til den kunden. Jeg tænker på: hvis der nu er 100 brugere, der klikker opret samtidigt, kan det så ske at Set rsKundeId = Conn.Execute("SELECT @@IDENTITY AS kundeId") henter en anden brugers "indtastning"?
Det skulle den helst ikke. Jeg skrev det på den måde, fordi jeg ikke er sikker på om Access understøtter denne funktion. Der få du det hele på en gang.
set rsKundeId = conn.execute("SET NOCOUNT ON; INSERT INTO DinTabel(...) VALUES(...); SELECT @@IDENTITY AS kundeId;")
select @@identity er ganske sikker, så længe det er samme connection som din INSERT bliver lavet på, helt uanset andre brugere. Du behøver ikke den sidste version.
når du f.eks opdatere din database, får du en returværdi som angiver hvormange felter der er blevet påvirket. Ved at sætte "SET NOCOUNT ON" sender den IKKE det tilbage.
Prøv f.eks dette: set rs = conn.execute("update EnTabel set Enkolonne='et eller andet' where HvadVedJeg='EtEllerAndet'", AntalOpdateretFelter)
så angiver AntalOpdateretFelter hvor mange felter der er blevet påvirket.
Iøvrigt ser det ud til at Access ikke kan finde ud af at afvikle denne:
set rsKundeId = conn.execute("SET NOCOUNT ON; INSERT INTO DinTabel(...) VALUES(...); SELECT @@IDENTITY AS kundeId;")
Får at vide:
Microsoft JET Database Engine (0x80040E14) Der er fundet tegn efter slutningen af SQL-sætningen.
Så jeg benytter blot første forslag.
Tak til alle.
Synes godt om
Ny brugerNybegynder
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.