27. marts 2004 - 06:02Der er
10 kommentarer og 1 løsning
LOpslag i Access
Hejsa..
Jeg har over 100.000 varenumre som jeg har brug for at lave opslag i. Excel kan ikke håndtere så mange, uden at jeg skal lave en masse krumspring. Kan man ikke have selve varekartoteket i access og så lave en form for LOpslag fra Excel? - Jeg har prøvet at lave en databaseforespørgelse, men den returnere alt i databasen, og ikke kun det enkelte varenummer..
Er der nogen med en løsning derude, ville det være skønt...
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Mig bekendt er det muligt at importere med kriterier fra Access, men jeg ved ikke hvordan. Men grundlæggende må man spørge sig selv, om det er det rigtige program du bruger.
Vi ved jo, at Excel kan håndtere ca 65000 rækker, og du har 100000 (og kommer der flere til?). Så alene her knækker filmen, som du jo også selv skriver "uden at jeg skal lave en masse krumspring".
Jeg er ikke nogen "Excel-guru", så du tage mit manglende kendskab til programmet med i dine overvejelser. Men jeg ved, at antal poster (rækker) i Access ikke er en begrænsende faktor for en veldefineret database, men alene databasens størrelse. En Access db kan fylde 2 Gb, og det giver en hel..... masse poster.
Hvilke beregninger skal du foretage af dine poster, som ikke kan udføres i Access? Husk på, at selvom Access er et databaseprogram, kan det også regne, på samme måde som regnearket Excel også kan anvendes som database.
Så mit umiddelbare forslag vil være, at skifte til Access som hovedprogram. Hvis du så skal foretage nogle beregninger som Access ikke kan, så kan du eksportere udvalgte data til Excel og beregne der, for derefter at vende tilbage til Access..
Hej... Jeg overvejede at skrive at det skal laves i excel, og det skal det, da det er nogle simuleringer jeg laver, som access ikke kan sættes op til på en nem måde. Vi har haft nogen til at kikke på det, og de har opgivet det, eller rettere der skal rigtig mange penge på bordet for at få lavet det i access, og jeg har det kørende i excel, men da der kun var 15.000 varenumre til at starte med, så var det ikke et problem, men det er det så blevet nu....
Og ja.. det kan nemt ende op med 200.000 varenumre, det var derfor jeg gerne ville have datatrækket fra access, da det nemt kan indeholde dette antal...
Nemt og nemt :-) 200.000 varenumre må højst fylde 100 bytes hver i snit - så rammer du Access' grænse på 2GB.
Men så længe det holder pladsmæssigt, kan du så ikke have dine data i Access, lave udtræk på dem, du skal bruge og ekspterere resulatet til Excel, hvor du så kan lave dien simuleringer.
Private Sub Worksheet_Change(ByVal Target As Range) Dim DB As String If Not Intersect(Target, Range("A2:A25")) Is Nothing Then ' i ovenstående Range udfører den opslaget, når der ændres eller skrives i en af cellerne
DB = "C:\db7" ' Sti og navn på database uden .mdb
' I dette eksempel slår den op I Tabellen Medlemmer, hvor kriterie er på medlemsnummer, _ som tastes ind i rangen, det fundne skrives i cellerne til højre for den aktive celle i _ kolonne A
Private Sub Worksheet_Change(ByVal Target As Range) Dim DB As String If Not Intersect(Target, Range("A2:A25")) Is Nothing Then ' i ovenstående Range udfører den opslaget, når der ændres eller skrives i en af cellerne
DB = "C:\db7" ' Sti og navn på database uden .mdb
' I dette eksempel slår den op I Tabellen Medlemmer, hvor kriterie er på medlemsnummer, _ som tastes ind i rangen, det fundne skrives i cellerne til højre for den aktive celle i _ kolonne A
Public Sub SletNavne() ' Da den ved hver opslag i databesen , navngiver området daterne skrives i _ eks. "EksterneData_6", vil de hobe sig op hvis de ikke slettes, det gøres så her.
For Each n In ActiveSheet.Names If IsNumeric(Right(n.Name, 1)) Then ActiveSheet.Names(n.Name).Delete End If Next End Sub
Hvorfor ikke bare inddele varenumrene på flere ark i excel???
Ark 1: Navn = 00001-50000 || Indhold = De første 50000 varenumre Ark 2: Navn = 50001-100000 || Indhold = De næste 50000 varenumre Ark 3: Navn = 100001-150000 || Indhold = De næste 50000 varenumre Ark 4: Navn = 150001-200000 || Indhold = De sidste 50000 varenumre
På den måde overskrider du ikke grænsen på 65000 rækker pr. ark... Og da du alligevel vil lave opslag i dem, kan du jo blot lave en formel der henviser til de andre ark, afhængigt af hvilke(t) varenummer du vil slå op...
S.R.
Synes godt om
Slettet bruger
29. marts 2004 - 20:41#8
jkrons >> 2 GigaByte (GB) er 2,147,483,648 byte (2 * 2^30 byte) Dvs. 200,000 varenumre kan hver fylde ca. 10 KB.
Eller hvis de fylder 100 Byte i snit: er der plads til 21,474,836 af dem
Hejsa... Og undskyld mit sene svar her, men jeg har været væk i nogle dage, og har ikke haft tid til at kikke på det før nu. Men tak for hjælpen fra jer alle.
Svaret som satanic_raven gav, kan jeg ikke bruge, da det er sådan jeg bruger det idag, og det er alt for langsomt. Og spørgsmålet gik egentlig på at lave en form for Lopslag i en access database. :-)
Kabbaks kommentar kan jeg skal bruge, og jeg får det lige tilpasset helt her i den kommende weekend, så hvis du afgiver et svar skal du få dine point.
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.