Avatar billede keldo Nybegynder
14. januar 2006 - 16:24 Der er 13 kommentarer og
2 løsninger

Importere data fra Excel til access og køre en tilføjelsesforsp.

Hej Eksperter.

Jeg har en opgave jeg gerne vil have løst, og jeg er overbevidst om at access kan løse den, jeg ved bare ikke hvordan. Det er jo så her I kommer ind i billedet. ;-)
Jeg har en stor database, som bla. indeholder en tabel med "kundedata". Jeg vil gerne aut. have oprettet/tilføjet nogle faktura i en anden allerede oprettet tabel kaldet "faktura", bla. ved hjælp af en tilføjelsesforespørgsel. Problemet at at jeg ikke vil have dem sammenkædet, da historiske data i "faktura" så vil ændre sig hvis jeg ændre noget i "kundedata" ex. navn eller adresse efterfølgende. Jeg har så tænkt på at eksportere dataerne til et excelark (på den måde får jeg "døde" data) fra "kundedata" ved hjælp af en forespørgsel, som først finder de relevante data og dernæst eksportere dem. Dernæst ville jeg importere dataerne fra excelarket og oprette dem i "faktura". Det bør vel ikke være så kompliceret men jeg ville jo gerne have at det hele forgik aut. ved klik på en knap som så aktiverede en makro der kører det hele.
Mit spørgsmål, er det sådan jeg skal gøre, eller er der en måde jeg ikke set?? Og hvad gør jeg konkret? Jeg skal sige at jeg er godt inde i access men ikke så meget i SQL.
Håber på hjælp :-)
Avatar billede ffsoft Praktikant
15. januar 2006 - 12:55 #1
Du vil gerne bevare historiske data ?? Når du har lavet en faktura
vil du gerne gemme data om hvor kunden boede på det tidspunkt og hvad
varen kostede på dette tidspunkt?? Hvis du bruger din opdaterede kundetabel
og din opdaterede varetabel vil et opslag evt. give en forkert adresse og
en forkert pris i forhold til den gang fakturaen blev lavet??
Løsningen er at gemme disse data i en separat tabel, der er ingen grund
til at blande Excel ind i dette, når fakturaen bliver dannet skal der
samtidig skrives i den historiske tabel.
Du kan lave en opdateringsforespørgsel der skriver i den historiske
tabel eller du kan kode dig ud af det. hvsi du vil have mere hjælp er det
nødvendigt at vide hvad tabellerne hedder og hvilke felter det drejer sig
om.
Avatar billede keldo Nybegynder
15. januar 2006 - 17:24 #2
ffsoft... du har helt ret. Jeg vil gerne gemme de historiske data fra dengang fakturaen blev lavet. Ok jeg skal lave en opdateringsforespørgsel der skriver i en historisk tabel. Skal jeg lave en tabel der hedder "historisk faktura data"? Som indeholder de felter de bruges i faktura? Hvordan får jeg dataerne over i den hisstoriske tabel? Du behøver ikke beskrive i detaljer med feltnavne hvad jeg skal gøre, men det ville være rart med en step-by-step rundtur, sådan i grove træk. Om muligt.
Dataerne til faktura er fra stamdata, og indeholder i grovetræk, kundenr, navn, adresse mv. og varer samt pris felter.
Men dvs. når jeg har oprettet de nye data med de nye jeg skal fakturere, så smider jeg de nødvendige data over i en historsik tabel og herefter skal de videre til fakturatabelen??
Avatar billede ffsoft Praktikant
15. januar 2006 - 21:48 #3
Du har fat i den rigtige ende. Læg data i fakturatabellen sådan som
du hele tiden har gjort. Historik tabellen skal indeholde de felter
som du synes det er interessante at gemme og selvfølgelig primærnøglen
fra fakturatabellen.

Insert into tblHistorik Select * from tblFaktura Where FaturaID =
NyesteFakturaNummer

Det er ikke muligt at være mere præcis, uden at kende tabelnavne,
feltnavne og relationer. Jeg kan forstå at du arbejder med noget
der er vitalt for landets interesser og derfor ikke kan afsløres her.
Avatar billede keldo Nybegynder
16. januar 2006 - 11:36 #4
ok, du har humor. ;-)
Insert into tblHistorik Select * from tblFaktura Where FaturaID =
NyesteFakturaNummer..... hvor skal det stå? En makro? En knap?

Jeg kan godt se nu hvad jeg skal gøre. Men mit problem har netop også været hvordan jeg for access til at gøre ovenstpende, altså, skulle jeg oprette en en knap, VedKlik ex.??
Avatar billede keldo Nybegynder
16. januar 2006 - 13:26 #5
ffsoft, arbejder lidt videre med det. Jeg har forstået din Insert sætning. Når næste problem kommer, og det gør det jo nok, så skriver jeg tilbage.
Avatar billede ffsoft Praktikant
16. januar 2006 - 14:33 #6
Prøv i første omgang at tilknytte det til hændelsen on_click på en knap, når
det så virker kan du bruge den hændelse som laver fakturaen til osse at
skrive til historik tabellen.
Avatar billede keldo Nybegynder
16. januar 2006 - 16:41 #7
ok, jeg et fint stykke af vejen. Arbejder med at få den til at skrive de relevante data til historikken først. Så kan jeg altid skrive til og oprette faktura bagefter. Dog har jeg et enkelt felt som driller. Det er et felt som har relationer og som er et opslagfelt i faktura. Det bestemmes ud fra kriterier, og hvor jeg normalt selv vælger i et drop-down vindue. Hvordan skriver jeg i opdateringsforespørgslen, hvad den skal vælge? I fakturatabellen ser den i en anden tabel. SÅ den skal vel slå teksten op? Forstår du hvad jeg mener?
Avatar billede ffsoft Praktikant
16. januar 2006 - 20:27 #8
Du kan jo hente værdien fra dropdown (comboboksen) ved at skrive
variabel = me!comboboksnavn og så flette variablen ind i SQL udtrykket.
Avatar billede keldo Nybegynder
16. januar 2006 - 22:59 #9
øhh, dvs i et kriterieudtryk bliver det noget med:
IIf[prøve]=yes;variabel=me!comboboksnavn
hvor "variabel" er den tekst der skal stå i feltet (som også er en valgmulighed i drop-down menuen) hvis [prøve]=yes og comboboksnavnet er navnet på den tabel hvor indeholdet i comboboksen står?? Eller? Drop-downmenuen kommer nemlig fra et oslag i en tabel som hedder "abtekst". Ex. et af ordene den slår op i tabellen "abtekst" hedder "standard" så kunne jeg skrive:
Avatar billede keldo Nybegynder
16. januar 2006 - 23:10 #10
ups, trykkede send for tidligt.....
Drop-downmenuen kommer nemlig fra et opslag i en tabel som hedder "abtekst". Ex. et af ordene den slår op i tabellen "abtekst" hedder "standard" som jeg vil vælge, så kunne jeg skrive:
IIf[prøve]=yes;standard=me!abtekst  ???
problemet var nemlig når jeg ville føre de historiske data over i og oprette en faktura, ville den ikke indsætte teksten i mit dropdown felt, da det skulle være et tal der ref. til den tabel hvorfra dropdown dataerne kom fra.
Så nu hvor jeg har vendt det hele i hovedet igen ;-) kan man sige; Hvordan skriver jeg i de historiske data så access ved indsæt og opret af faktura kan finde den rigtige tekst i dropdown menue feltet?
Avatar billede keldo Nybegynder
16. januar 2006 - 23:12 #11
Takker i øvrigt mange gange for din hjælp indtil videre.
Avatar billede keldo Nybegynder
17. januar 2006 - 10:29 #12
hmm, det bliver mere og mere kompliceret jo længere jeg dykker ned. I min faktura i dag, har jeg en relation mellem feltet kundenr og tabellen stamdata. Således at når jeg taster kunde nr ind i faktura henter access aut. navn, adresse m.m. fra tabelen stamdata. Men hvad når jeg vil lave min opdateringsforespørgsel? Og indsætter kunde nr, vil relationen så overskrive de data jeg hiver med over også? Altså bla. navn adresse, m.m.? Vil der komme en konflikt mellem samme data fra to forskellige kilder?? Og hvis jeg fjerne relationen mellem feltet kundenr og tabellen stamdata, hvad sker der så med mine eksisterende data?
Avatar billede keldo Nybegynder
20. januar 2006 - 12:12 #13
nå, jeg arbejder videre og lukker indtil videre. Har kun fået svar på lidt af det, men tak indtil videre.
Avatar billede ffsoft Praktikant
20. januar 2006 - 12:44 #14
Jeg vil lave et lille eksempel til dig i Access 2000 når jeg kommer
hjem en gang og så kan du hente det på min hjemmeside.
Avatar billede ffsoft Praktikant
20. januar 2006 - 20:34 #15
Gå ind på http://www.ffsoft.dk/kundeservice.asp og skriv dit
navn som navn og som kode, så kan du hente hele databasen.
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