webForumDet fria alternativet

kopiera del av databas på intranät till webbplats på internet

.NET

8 svar · 297 visningar · startad av lolukokasos

Medlem sedan mars 2001196 inlägg
Frågan#1

Jag håller på att bygga ett adminprogram där det ska finnas en funktion att kopiera en del av en Accessdatabas(inte alla poster) från ett intranät till nuvarande webbplats där en liknande databas redan finns. Hur går man tillväga?

Medlem sedan dec. 19991 072 inlägg
#2

Det finns flera sätt att göra detta på.

Ser båda databaserna exakt likadana ut struktur-mässigt? dvs, med tabeller/kolumner/frågor?
Isf:
- Ta en kopia på den första databasen (db1) detta blir db2
- trunkera alla tabeller i db2
- Loopa igenom posterna i db1 som du vill ha med
- Gör samtidigt i loopen insert i db2
- Flytta db2 till webplatsen

Om databaserna inte ser likadana ut kan du tex. använda Access-objketet från VB och skapa de tabeller/kolumner du vill ha och sedan loopa från db1 --> db2.

Hör av dig om du behöver kodexempel eller bättre förklaring!

------------------
Fredrik Klarqvist
f.klarqvist@spray.se
http://server.webwerkstaden.se/fredde/

Medlem sedan mars 2001196 inlägg
#3

Helst vill jag inte kopiera över den befintliga databasen som ligger på webbplatsen. Så alternativ två ovan skulle nog passa bättre, men jag förstår inte riktigt allt. Jag har inte hittat nåt Access-objekt i VB, vad heter objektet?

Alltså, det skulle vara önskvärt med någon kod eller nån bra länk.

Medlem sedan dec. 19991 072 inlägg
#4

Japp, då kör vi på exemplet där vi skapar själva databasen från noll.

Du behöver följande referenser:
"Microsoft Access X.0 Object Library"
"Microsoft ActiveX DataObjects 2.X"
"Microsoft ADO Ext. 2.X for DLL and security"

Jag har skrivit en kodsnutt här som visar hur du skapar både själva databasen, en tabell och en kolumn.
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
Dim accApp As Access.Application
Dim accDb As Access.CurrentProject

Dim adoCn As ADODB.Connection
Dim adoxTabl As ADOX.Table
Dim adoxCol As ADOX.Column
Dim adoxCat As ADOX.Catalog

Dim strCn As String

'Skapa själva databasen
Set accApp = New Access.Application
Call accApp.NewCurrentDatabase(App.Path & "\\db.mdb")
accApp.CloseCurrentDatabase
Set accApp = Nothing

'skapa en Connection och ange en connection-sträng
Set adoCn = New ADODB.Connection
strCn = "Provider=Microsoft.Jet.OLEDB.4.0;" & \_
  "Data Source=" & App.Path & "\\db.mdb"

'Öppna connection
adoCn.Open strCn

'Skapa ny katalog
Set adoxCat = New ADOX.Catalog

'Ange connection
adoxCat.ActiveConnection = adoCn.ConnectionString

'Skapa ny tabell
Set adoxTabl = New ADOX.Table

    'Ange namn på den nya tabellen
    adoxTabl.Name = "jobs5"

    'Skapa ny kolumn
    Set adoxCol = New ADOX.Column
    
        'Ange namn och egenskaper för kolumnen
        adoxCol.Name = "ID"
        adoxCol.Type = adInteger
        
        'Lägg till kolumnen till tabellen
        adoxTabl.Columns.Append adoxCol
    Set adoxCol = Nothing
    
    'Lägg till tabellen i katalogen (databasen)
    adoxCat.Tables.Append adoxTabl
Set adoxTabl = Nothing
Set adoxCat = Nothing

Sen kan modda koden och lägga till fler/kolumner/tabeller som du vill. Du kan även skapa frågor m.m. om du så vill.

Information om hur ADOX funkar hittar du här: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/admscobjectmodel.asp?frame=true

Fråga gärna mer om du behöver mer info!

------------------
Fredrik Klarqvist
f.klarqvist@spray.se
http://server.webwerkstaden.se/fredde/

Medlem sedan mars 2001196 inlägg
#5

Okidoki, det exemplet verkar bra. Fast jag skulle helst av allt kunna kontakta databasen utifrån och tex. använda SQL-kommandon direkt på den befintliga databasen på webbplatsen. Går det?

Givetvis funkar säkert ovan nämnda exemplet alldeles utmärkt men jag tycker det verkar lite onödigt om man ska skapa nya databaser många gånger per dag.
Jag tackar dig Fredrik för tipsen! :)

/Lukas

Medlem sedan dec. 19991 072 inlägg
#6

Jodå, visst kan du använda SQL för att skapa tabeller och kolumner istället. Men du behöver själva Access-koden för att skapa databasen iaf.

När du väl har gjort det kan du använda "CREATE TABLE" / "ALTER TABLE" för att skapa och lägga till tabeller / kolumner.

Men jag ser inte varför det skulle vara lättare att använda än det här exemplet. Du kan ju bygga metoder för att lägga till dynamiska kolumner/tabeller. Men det är förstås en smaksak...

Hjälp för SQL kan du ladda ner här iaf: http://www.microsoft.com/SQL/techinfo/productdoc/2000/books.asp

------------------
Fredrik Klarqvist
f.klarqvist@spray.se
http://server.webwerkstaden.se/fredde/

Medlem sedan mars 2001196 inlägg
#7

Det verkar som att jag inte har uttryckt mig tillräckligt tydligt :(.

Mitt huvudmål här i livet (i vart fall de närmsta timmarna) är att skyffla över "viss" data från en databas(intranät) till en liknade databas på en webbplats. Jag är inte primärt ute efter att skapa nya tabeller och liknande saker. Probelemet som jag ser det är att få kontakt med webbplatsens databas. Jag skulle helst av allt vilja göra en "connection" men inser att jag har ett problem med inloggning på webbplatsen.
Är mitt problem förståeligt? Det är inte lätt att vara nybörjare :h.

/Lukas

[Redigerat av lolukokasos den 21 nov 2001]

Medlem sedan dec. 19991 072 inlägg
#8

ok, du vill alltså helt enkelt öppna databasen på intranätet och flytta viss information till databasen på webplatsen?

Isf. är det bara att skapa 2 kopplingar och flytta det du vill flytta mha recordsets.

Vad är det för problem du har med att koppla upp dig mot databasen på webplatsen?

Ska ditt program köras på klientdatorn eller på servern (är det olika servrar)?
------------------
Fredrik Klarqvist
f.klarqvist@spray.se
http://server.webwerkstaden.se/fredde/

[Redigerat av fredrik den 21 nov 2001]

Medlem sedan mars 2001196 inlägg
#9

Ja, det är nog en koppling som jag är ute efter. Programmet ska köras på klienten. Berätta gärna hur man skriver en koppling till en webbserver där databasen ligger. Jag har under em. sökt på MSDN utan något positivt resultat.

Ursäkta om jag varit otydlig innan men jag har väl knappt vetat vad det var jag ville :h

251 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)