Avatar billede Slettet bruger
03. juni 2009 - 10:01 Der er 16 kommentarer og
1 løsning

Udskrift fra SQL SERVER EXPRESS i stedet for ACCESS

Hej.
Jeg har brugt access database på min hjemmeside, men da den går kold hele tiden pga. den er overbelastet bliver jeg nød til at gå over til SQL server... Vi har nu fået den på plads, men skal så have ændret min kode til at udskrive fra SQL i stedet for Access...  Kan jeg bare ændre måden den connecter på, eller er det hele koden der skal ændres??

Har følgende nu:

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM seneste WHERE visnyhed < 3 ORDER BY tid DESC, id DESC"
strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("/db/mydb.mdb")
rs.Open strSQL, strDSN, 1

Håber i kan hjælpe. :-)
Mvh.
Henrik
Avatar billede softspot Forsker
03. juni 2009 - 10:16 #1
En del af den SQL som fungerer i Access vil også fungere i SQL Server, men det afhænger meget af hvor komplicerede dine SQL-konstruktioner er. Du bør teste hver enkelt forespørgsel under alle omstændigheder.
Avatar billede fennec Nybegynder
03. juni 2009 - 10:20 #2
Det kommer lidt an på hvilke funktioner og data du gør brug af.

Har du f.eks. brugt nogen af de indbyggede funktioner i Access er det ikke sikkert de virker længere. Det gæller f.eks. date() og now(). Denne vil f.eks. ikke virke da SQL Server ikke har en now() funktion. Den hedder derimod getdate():

Dette skal omskrives:
sql = "select * from enTabel where dateKol>=now()"
Til dette:
sql = "select * from enTabel where dateKol>=getDate()"

Men ellers skal du bare ændre din strDSN, også vil de fleste metoder fungere. Alt hvad der har med datoer at gøre skal du dog tjekke da Access modtager datoer i #mm-dd-yyyy# format mens SQL Server bruger 'yyyymmdd'.
Avatar billede Slettet bruger
03. juni 2009 - 10:22 #3
Okay, det lyder godt..... Selve SQL sætningerne skal jeg nok få styr på, det er mere connection til databasen jeg er lidt i tvivl om....

Hvis en kunne prøve at lave et eksempel ud fra de data jeg har skrevet, ville det være super fedt...

Jeg har naturligvis server og user/password info til SQL databasen...
Avatar billede fennec Nybegynder
03. juni 2009 - 10:28 #4
Du finder alle de connectionsstrings du kan ønske dig her:
http://www.connectionstrings.com/
Avatar billede fennec Nybegynder
03. juni 2009 - 10:31 #5
Den du leder efter er sikkert denne:

Ole DB Standard security
Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase;Uid=myUsername; Pwd=myPassword;
Avatar billede Slettet bruger
03. juni 2009 - 10:33 #6
Hmmm. Hvilken en skal man bruge når det er SQL SERVER EXPRESS.. :-)

Er der ikke en der kan prøve at lave et eksmpel ud fra det jeg har?? Det ville være super.. Er lidt lost...

Og databasen ligger på serveren jeg kører det fra... (Min egen dedikeret, så har adgang til alt)....

Og er Provider SQLOLEDB eller?
Avatar billede Slettet bruger
03. juni 2009 - 10:47 #7
Har forsøgt mig lidt frem, men er godt nok lidt lost med det SQL connection....

Er dette her helt ude i hegnet??

Selve SQL sætningen har jeg ikke lige ændret endnu, så bare se bort fra den...


Set rs = CreateObject("ADODB.Connection")
strSQL = "SELECT * FROM seneste WHERE visnyhed < 3 ORDER BY tid DESC, id DESC"
strDNS="Driver={SQL Server};Server=XXX Database=XXX E;Uid=XXX;Pwd=XXX;"
rs.Open strSQL, strDSN, 1

If Not (rs.BOF Or rs.EOF) Then

    rs.PageSize = 12
    rs.AbsolutePage = intPage
    intRecCount = rs.PageSize
    intPageCount = rs.PageCount
%>
Avatar billede Slettet bruger
03. juni 2009 - 11:01 #8
Nå, glem den anden.. Fandt en jeg synes passede lidt bedre her...

Set rs = Server.CreateObject("ADODB.Connection")
strSQL = "SELECT * FROM seneste WHERE visnyhed < 3 ORDER BY tid DESC, id DESC"

rs.ConnectionString="driver={SQL Server};" _
& "server=SERVER;" _
& "uid=USER;" _
& "pwd="PWD;"

rs.Open strSQL, strDSN, 1
objDBConn.DefaultDatabase = "mydatabase"


Er det rigtigt???
Avatar billede Slettet bruger
03. juni 2009 - 11:12 #9
Den kommer med følgende:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Driver Manager] Data source name too long

/indexsql.asp, line 160

???
Avatar billede fennec Nybegynder
03. juni 2009 - 11:13 #10
Vi kan ikke hjælpe dig meget med hvad server navnet er på din express server. Det skal du selv vide. Du kan dog se det når du starter SQL Manageren op og skal logge på. Der skulle den gerne fortælle dig hvilken server den prøver at connecte til. Hvis jeg husker ret er det noget ala "Computernave\SQLExpress"

Ellers skal du gå ned og connecte direkte til mdb filen som de også har beskrevet:

Attach a database file on connect to a local SQL Server Express instance
Driver={SQL Server Native Client 10.0};Server=.\SQLExpress; AttachDbFilename=c:\asd\qwe\mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;

Attach a database file, located in the data directory, on connect to a local SQL Server Express instance
Driver={SQL Server Native Client 10.0};Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;

Er det SQL Server 2005 eller 2008 du bruger? Det har også betydning.
Avatar billede fennec Nybegynder
03. juni 2009 - 11:17 #11
Du er begyndt at sætte connection strings 2 steder (via parameter og attribut). Du skal kun sætte EN af dem. Gå helt tilbage til din orginale kode:

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM seneste WHERE visnyhed < 3 ORDER BY tid DESC, id DESC"
strDSN = "!! Ret KUN denne !!"
rs.Open strSQL, strDSN, 1
Avatar billede Slettet bruger
03. juni 2009 - 11:21 #12
Jeg ved hvad navnet er, men den skriver som jeg før skrev at [Microsoft][ODBC Driver Manager] Data source name too long ... Og det er den rigtige....

Jeg bruger SQL Server 2005.

Og har følgende kode: (Server, user og kode er lige fjernet!) ;-)

Set rs = Server.CreateObject("ADODB.Connection")
strSQL = "SELECT * FROM seneste"
rs.ConnectionString="driver={SQL Server};" _
& "server=SERVER;" _
& "uid=XXX;" _
& "pwd=XXX;"

rs.Open strSQL, strDSN, 1
Avatar billede fennec Nybegynder
03. juni 2009 - 11:36 #13
Lad være med at bruge rs.ConnectionString. Gå tilbage til din orginale løsnign. Sådan her:

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM seneste WHERE visnyhed < 3 ORDER BY tid DESC, id DESC"
strDSN = "driver={SQL Server};server=SERVER;uid=XXX;pwd=XXX;"
rs.Open strSQL, strDSN, 1

Hvad er dit server navn?? Det kan du godt skrive uden frygt for noget som helst (med mindre det er en IP eller DNS). Det skulle gerne kun være et computer navn på dit netværk og derfor intet vi kan bruge. Selv hvis du skrev IP'en har vi stadig ikke adgangskoden.
Avatar billede Slettet bruger
03. juni 2009 - 11:47 #14
Fennec, you are the king!!! :-)

Det funker nu.. Fedt.....

MANGE TAK FOR HJÆLPEN!!
Avatar billede fennec Nybegynder
03. juni 2009 - 11:51 #15
.o) <-- One Eyed Jack
Avatar billede Slettet bruger
04. juni 2009 - 20:55 #16
Hey Fennec, kigger du stadig med her??

Får pludselig denne her fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e21'

ODBC driver does not support the requested properties.

/indexsql.asp, line 159


Det virkede sidst og det eneste vi har lavet er at opdaterer databasen... Har du en ide om hvad der kan være galt??

Bruger følgende:

Set rs = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM tab_seneste WHERE visnyhed < 3 ORDER BY tid DESC, id DESC"
strDSN = "driver={SQL Server};server=SERVER86755\SQLEXPRESS;uid=XXX;pwd=XXX;"
rs.Open strSQL, strDSN, 1


If Not (rs.BOF Or rs.EOF) Then

    rs.PageSize = 12
    rs.AbsolutePage = intPage
    intRecCount = rs.PageSize
    intPageCount = rs.PageCount
%>
Avatar billede Slettet bruger
05. juni 2009 - 17:50 #17
Har styr over dt, så bare glem det.. :-)
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
Kurser inden for grundlæggende programmering

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