Tjena..
Jag har 2 databaser..
Den ena databasen är en master och den andra en slave..
Informationen i slavedatabasen skall vara samma som det är i masterdatabasen.
Hur gör man enklast ett script som uppdaterar slavedatabasen med informationen i masterdatabasen..
Jag har gjort ett script som fungerar på följande vis.
Hämta alla data ur båda databaserna och sortera efter artikelnummer.
While Not Masterdatabas.EOF
Kolla ifall Masterdatabas("Artikelnummer") = Slavedatabas("Artikelnummer")
Om de är lika, kolla också att varugrupp, pris, artikelnamn är lika, är dom inte det så uppdatera, annars är den inte ändrad.
Är Artikelnumren olika så saknas antaligen artikeln i slavedatabasen så då lägger vi till den.
Hoppa fram ett steg i Masterdatabas och Slavedatabas
Wend
Jag har bifogat en liten del av koden så ni kan se hur jag har tänkt..
Koden fungerar bra om slavedatabasen och masterdatabasen har lika många poster, men om jag lägger
till en post i masterdatabasen så hänger sig scriptet i en oändlig loop eller nått, hur detta
kan ske fattar jag inte då jag stegar fram i databasen hela tiden..
Är det någon som ser någon lösning, ytterligare problem eller saker som kan förbättras?
Set DB_QUERY_TARGET = ConnectTarget.Execute("SELECT * FROM tbl_Products ORDER BY col_ArticleNr;")
Set DB_QUERY_SOURCE = ConnectSource.Execute("SELECT * FROM tbl_Products ORDER BY col_ArticleNr;")
intCounter = 0
'-- Finns det något i källdatabasen..
While Not DB_QUERY_SOURCE.EOF
'-- Öka räknaren med 1
intCounter = intCounter + 1
'-- Om det inte finns poster i måldatabasen så är det bara att lägga in allting
If Not ( DB_QUERY_TARGET.EOF ) Then
bool_Temp = "TRUE"
'-- Första frågan, är det samma artikelnr, om inte lägg till den..
If ( Trim(DB_QUERY_SOURCE("col_ArticleNr")) = Trim(DB_QUERY_TARGET("col_ArticleNr")) ) Then
'-- Om den finns, kontrollera att alla värden är likadana.
If ( Trim(DB_QUERY_SOURCE("col_Price")) = Trim(DB_QUERY_TARGET("col_Price")) AND DB_QUERY_SOURCE("col_Price") = DB_QUERY_TARGET("col_Price") AND Trim(DB_QUERY_SOURCE("col_Group")) = Trim(DB_QUERY_TARGET("col_Group")) ) Then
'-- Är alla värdena lika skriv ut det.
Response.Write("<tr><td>" & intcounter & "</td><td>" & DB_QUERY_SOURCE("col_ArticleNr") & "</td><td>" & DB_QUERY_SOURCE("col_Name") & "</td><td>Informationen har icke uppdaterats.</td></tr> ")
'-- Om du inte har lagt till något så hoppa fram ett snäpp i de båda databaserna.
DB_QUERY_SOURCE.MoveNext
DB_QUERY_TARGET.MoveNext
Else
'-- Är dom inte lika uppdatera måldatabasen med källdatabasen.
strName = Trim(DB_QUERY_SOURCE("col_Name"))
strPrice = Trim(DB_QUERY_SOURCE("col_Price"))
strArticleNr = Trim(DB_QUERY_SOURCE("col_ArticleNr"))
strGroup = Trim(DB_QUERY_SOURCE("col_Group"))
strSQL_write = "UPDATE tbl_Products SET col_Name = '"& strName &"', col_Price = '"& strPrice &"', col_Group = '"& strGroup &"' WHERE col_ArticleNr = '"& strArticleNr &"';"
Set DB_QUERY_WRITE = ConnectTarget.Execute(strSQL_write)
Response.Write("<tr><td>" & intcounter & "</td><td>" & DB_QUERY_SOURCE("col_ArticleNr") & "</td><td>" & DB_QUERY_SOURCE("col_Name") & "</td><td>Informationen har uppdaterats.</td></tr> ")
'-- Om du inte har lagt till något så hoppa fram ett snäpp i de båda databaserna.
DB_QUERY_SOURCE.MoveNext
DB_QUERY_TARGET.MoveNext
End If
Else
'-- Om den inte finns så lägg till den..
strName = Trim(DB_QUERY_SOURCE("col_Name"))
strPrice = Trim(DB_QUERY_SOURCE("col_Price"))
strArticleNr = Trim(DB_QUERY_SOURCE("col_ArticleNr"))
strGroup = Trim(DB_QUERY_SOURCE("col_Group"))
strSQL_write = "INSERT INTO tbl_Products(col_Name, col_Price, col_ArticleNr, col_Group) VALUES('"& strName &"','"& strPrice &"','"& strArticleNr &"','"& strGroup &"');"
Set DB_QUERY_WRITE = ConnectTarget.Execute(strSQL_write)
Response.Write("<tr><td>" & intcounter & "</td><td>" & DB_QUERY_SOURCE("col_ArticleNr") & "</td><td>" & DB_QUERY_SOURCE("col_Name") & "</td><td>Artikeln har lagts in.</td></tr> ")
DB_QUERY_SOURCE.MoveNext
DB_QUERY_TARGET.MoveNext
End If
End If