Avatar billede cotus Nybegynder
09. december 2002 - 21:20 Der er 34 kommentarer og
1 løsning

Imporetre fra Oracle til Access live...

Ja, overskriften siger vel sig selv?
Hvordan importerer jeg fra en Oracle database til en Access-database f.eks. hvert 10 minut?

/cotus
Avatar billede arne_v Ekspert
09. december 2002 - 21:25 #1
Skriver noger VB kode der hver 10. minute connecter
til Oracle via ODBC og henter data.

ODBC forbindelse og hente data er ikke noget problem.

Jeg ved ikke lige hvordan man venter 10 minutter, men
jeg er ret sikker på, at VB kan gøre det.
Avatar billede cotus Nybegynder
09. december 2002 - 21:27 #2
Hmm...
Dvs., at det altså kan gøres!
Men hvordan? Er ikke inde i VB!
Skal jeg måske oprette spørgsmålet igen i kategorien VB, og give dig lidt point, eller ska jeg lade det stå her?

/cotus
Avatar billede grind Nybegynder
09. december 2002 - 21:29 #3
Det spørgsmål kunne jeg da også godt tænke mig at få et godt svar på. En mulig måde,er at oprette en kæde -nøjagtigt som ved import.Så opdateres den hele tiden når databasen åbnes og kæderne genoprettes.
Er der én der kan skrive et VB-program der kan automatisere importen,så udvalgte tabeller opdateres?
Avatar billede cotus Nybegynder
09. december 2002 - 21:33 #4
Hej John...

Hehe... Det er mig, der ska lave dit system! ;)

/cotus
Avatar billede grind Nybegynder
09. december 2002 - 21:38 #5
Nå,men så skal du jo have én til at skrive den opdateringsstreng der skal bruges.Det problem jeg render I er nemlig,at jeg ikke kan importere en tabel der indgår i en relation med andre uden først at blive bedt om at slette relationerne. Smart hvis det kunne gøres via en SQL-streng der kun opdaterer ændrede data i samtlige tabeller...
Avatar billede arne_v Ekspert
09. december 2002 - 21:44 #6
Der kan ikke være mange ben i at lave en query mod en Oracle
tabel connected med ODBC og gemme dem i en lokal Access tabel.

Men hvis I kun vil have nye records, så bliver det lidt
mere kompliceret.

Det nemmeste ville være hvis der var et timestamp på insert
i tabelen.

Fordi så kan man lave en SELECT MAX(instime) FROM accesstabel
og bruge den værdi i en SELECT * FROM oracletabel WHERE instime > resultat.
Avatar billede grind Nybegynder
09. december 2002 - 21:48 #7
Det lyder flot. Kan det konkretiseres lidt hvis du får navne på de tabeller og felter der skal hentes? NAvnene bibeholdes i Access, så tabeller og felter har samme egenskaber og navne.
Så kan du få lidt ekstra points - og hvad vi ellers finder ud af...Jeg aner intet om Oracle- og er ny i sql..
Avatar billede arne_v Ekspert
09. december 2002 - 21:49 #8
Jeg kan da prøve. Og hvis ikke jeg kan, så er der mange
andre kompetente folk her.
Avatar billede grind Nybegynder
09. december 2002 - 21:53 #9
arne v> Har du en mail jeg må sende Tabeldefinitionerne til eller evt. de tabeller der er trukket over i Access så du kan se felter og tabelnavne?
Avatar billede arne_v Ekspert
09. december 2002 - 21:55 #10
arne_v@mail.danbbs.dk

Er der grunde til at de ikke kan offentliggøres her ?

Og kan svaret offentliggøres her ?
Avatar billede grind Nybegynder
09. december 2002 - 21:58 #11
arne v>Ja, det vil jeg helst være fri for, da der foreligger nogle licensrettigheder, der forbyder offentliggørelse..
Men selve metoden til at gøre arbejdet, synes jeg da alle skal have glæde af.
Avatar billede arne_v Ekspert
09. december 2002 - 22:07 #12
Ellers kan du helle rikke give point for det uden at få ballade.

Men send det og jeg kigger på det. Hvor meget haster det ?
(jeg får formentligt først kigget på det i morgen)
Avatar billede grind Nybegynder
09. december 2002 - 22:12 #13
arne_v> Det haster ikke voldsomt. Hellere få hjælp der batter end gode råd som jeg ikke kan videreføre fordi jeg ikke har erfaring til det.
Jeg skal lige sige at Oracledatabasen ligger på min bruger PC,medens Accessdatabasen skal ligge på mit Webhotel. Det gør formentlig en forskel i..!
Avatar billede arne_v Ekspert
09. december 2002 - 22:17 #14
Det gør en stor forskel.

Fordi hele min ide bygger på, at du kan køre noget
på din Access database.

Og det kan godt være et stort problem, når den ligger
på et web-hotel.

Eller mere direkte sagt: der er ikke en snebold i helvedes
chance for at dit web-hotel vil tillade dig den slags.

Og så lige netop Access. Det var meget nemmere at uploade til stort
set enhver anden database.

Jeg går udfra at der er en ASP frontend til databasen.

Du kan blive nødt til at have et stykke ASP kode som
ligger data ind i databasen og have noget kørende på
din PC der læser fra Oracle og gemmer via det ASP
kode.
Avatar billede grind Nybegynder
09. december 2002 - 22:23 #15
Det lyder ikke rart. Kunne man evt. lade nogle data opdatere automatisk og så måske lade større ændringer ske ved at oploade databasen på ny en gang imellem? Eller hvor omfattende er det at lave?
Avatar billede grind Nybegynder
09. december 2002 - 22:25 #16
Er det bedre at hoste databasen selv på min win2000 Server?
Jeg anvender godt nok ASP til Databasen,men ved ikke nok om det til at kunne lave den fornødne ASP-opdateringskode..
Avatar billede arne_v Ekspert
09. december 2002 - 22:32 #17
Hvis man kan opdatere nogen data, så tror jeg ligeså
godt at man kan opdatere alle data.
Avatar billede arne_v Ekspert
09. december 2002 - 22:35 #18
ASP kode på dit web-hotel kan ikke hente data fra en
Access database på din PC. Men det kan hente fra din
Oracle database.

Så ville du ikke engang skulle opdatere noget som helst.

Men det rejser en række sikkerheds-problemer, hvis
du tillader adgang fra internettet til en database på
din PC.
Avatar billede grind Nybegynder
09. december 2002 - 22:43 #19
Vi kører trådløs forbindelse,godt nok med fast IP til udbyderen.Men jeg ved ikke om vi kan hackes udefra..?
Ellers må vel kunne indstille adgangstilladelserne til kun at omfatte den PC,der hoster min webside??
Avatar billede arne_v Ekspert
09. december 2002 - 22:47 #20
Der er vel altid risiko.

Selvfølgelig kan man konfigurere sig rimeligt sikkert, men
det kræver bare løbende kontrol og opdateringer.

Noget som du betaler dit web-hotel for at gøre (og som de
formodes at have ekspertise i).
Avatar billede cotus Nybegynder
10. december 2002 - 15:10 #21
grind> Hvad er idéen i, at de to databaser ligger på forskellige computere?
Hvorfor kan de ikke bare ligge på den samme?

/cotus
Avatar billede grind Nybegynder
10. december 2002 - 18:32 #22
Fordi den ene database er mit interne system,som jeg for alt i verden ikke vil løbe nogen risiko med på nettet. Derfor skal databasen på nettet importere eksterne data og kun vise data, men aldrig opdatere min interne database.
Avatar billede grind Nybegynder
10. december 2002 - 22:27 #23
arne > Det kunne være interessant at afprøve i praksis hvad der sker ved at oploade en database til webstedet samtidig med at en søger. Er du frisk på at prøve?Jeg kan bare overskrive den database jeg har med en ny kopi medes du søger...
Avatar billede arne_v Ekspert
10. december 2002 - 22:29 #24
Det kan du selv gøre. At både upload og browsnig kommer fra
samme PC er ligegyldigt.

Og du vil have noget nemmere end mig ved at ramme den
rigtige timing.
Avatar billede grind Nybegynder
10. december 2002 - 22:30 #25
Det prøver jeg da lige så...
Avatar billede grind Nybegynder
10. december 2002 - 22:35 #26
Får følgende fejl:
Microsoft JET Database Engine error '80004005'
Could not use ''; file already in use.
/Data_Returns/listbyblomsttid.asp, line 58

Men det står kun på ca. 1 minut så det er til at leve med. Og vel at mærke kun medens man søger i databasen eller anvender én af de datadrevne menuer.
Avatar billede grind Nybegynder
10. december 2002 - 22:39 #27
Selvom det bevæger sig lidt ud over denne kategori:
KAn man give brugeren en melding om at opdatering sker kl.XX, og så vende tilbage når opdatering er gennemført? Lidt primitivt måske, men bedre en en fejlmeddelelse som ingen forstår.
Avatar billede arne_v Ekspert
10. december 2002 - 22:42 #28
Ja. Jeg er sikker på at ASP koden kan fange denne
fejl og give brugeren en mere human fejl-besked, men
du skal nok have fat i en ASP mand til at fortælle hvordan.

(jeg har en ASP bog, men har aldrig haft tid til at læse den)
Avatar billede grind Nybegynder
10. december 2002 - 22:45 #29
Det prøver jeg at finde ud af...Det kunne forebygge en vis irritation.
Avatar billede arne_v Ekspert
11. december 2002 - 19:49 #30
Jeg har et forslag nu !

1)  Lave en copyall.mdb database
2)  Lav link (ikke import) af alle de relevante tabeller fra
    Oracle (gerne i readonly mode)
3)  Lav link til alle de samme tabeller i din Access database med
    tabellerne i
4)  Opret et module med følgende VB kode:

Private Sub copy1table(fromname As String, toname As String)
    DoCmd.RunSQL "DELETE FROM " & toname
    DoCmd.RunSQL "INSERT INTO " & toname & " SELECT * FROM " & fromname
End Sub

Public Function copyalltables()
    DoCmd.SetWarnings False
    Call copy1table("T1", "T1copy")
    Call copy1table("T2", "T2copy")
    DoCmd.SetWarnings True
    MsgBox "Copy done"
End Function

5)  Ret copyalltables til så den kopierer alle de tabeller du skal
    have kopieret.

6)  Opret en makro f.eks. copyall med indhold:

RunCode copyalltables()
Quit

7)  Opret en BAT-fil f.eks. copyall.bat med indhold:

"C:\Program Files\Microsoft Office\Office\MSACCESS.EXE" D:\rigtige-dir\copyall.mdb /x copyall
ftp -s:copyall.dat

(2 linier !)

8)  Opret copyall.dat med indhold:

open navn-på-dit-webhotels-ftp-server
dit-username
dit-password
cd dit-directory-med-database
put copyall.mdb
quit

Nu skulle copyall kopiere data fra Oracle til Access og uploade
Access databasen til dit web-hotel.

mvh/Arne
Avatar billede arne_v Ekspert
11. december 2002 - 19:51 #31
Jeg glemte lige at sige, at du naturligvis kan sætte
Windows 2000 schedulter til at køre copyall midt om natten hver nat.

mvh/Arne
Avatar billede grind Nybegynder
11. december 2002 - 21:13 #32
Det lyder som en god løsning. Den skal lige afprøves i praksis. Jeg vender tilbage og fortæller om det virker OK...
Avatar billede grind Nybegynder
11. december 2002 - 23:33 #33
Sammenkædning mellem Oracle og Access er nemt nok.Men Den mellem Access og en ny Access (den der skal uploades) kan der ikke oprettes kæder,da de tabeller der kædes til selv er "dynamiske"-formentlig. Nogen gode forslag. Kopi af hele databasen..?
Avatar billede grind Nybegynder
12. december 2002 - 01:51 #34
Ved at omdøbe tabellerne kan det dog lade sig gøre at oprette kæder mellem den database det skal på internettet og den der skal blive hjemme og "tappe" fra oracle. MEN MEN MEN..når databasen uploades brydes kæderne..! øv.
Avatar billede cotus Nybegynder
01. januar 2003 - 16:44 #35
/lukket
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
Computerworld tilbyder specialiserede kurser i database-management

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