Avatar billede faroe Nybegynder
27. maj 2002 - 09:44 Der er 20 kommentarer og
2 løsninger

Conect til sql server

Jeg prøver igen, at få besvaret spørgsmålet.
http://www.eksperten.dk/spm/215493
27. maj 2002 - 10:32 #1
Public Sub SQLTest()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
    cn.ConnectionString = "driver={SQL Server};" & _
        "server=srv;uid=sa;pwd=pwd;database=Pubs"
    cn.Open
Set rs = New ADODB.Recordset
rs.Open "EnEllerAndenTabel", cn, adOpenKeyset, adLockOptimistic
MsgBox rs(1).Name & ": " & rs(1)
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
27. maj 2002 - 11:12 #2
Servernavn og database angives i denne sætning:

cn.ConnectionString = "driver={SQL Server};" & _
        "server=DinServer;uid=sa;pwd=DitPassword;database=DinDatabase"
Avatar billede faroe Nybegynder
27. maj 2002 - 11:15 #3
Fungerer fint, men vorden kan man linke alle tabellerne til Access PROG.
lige som nor man bruger link tabele.
27. maj 2002 - 11:26 #4
Du kan IKKE linke uden at bruge de indbyggede funktioner til sammenkædning. Hvad er der i vejen med DNS?

Ovenstående kode duer kun til at få adgang via VBA.

Du kan dog knytte en formular direkte til SQL serveren vha følgende linier:

    DoCmd.OpenForm "DinForm"
    Set Forms!DinForm.Recordset = rs

Derved ser hele koden sådan ud:
Public Sub SQLTest()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
    cn.ConnectionString = "driver={SQL Server};" & _
        "server=srv;uid=sa;pwd=pwd;database=Pubs"
    cn.Open
Set rs = New ADODB.Recordset
rs.Open "EnEllerAndenTabel", cn, adOpenKeyset, adLockOptimistic

    DoCmd.OpenForm "DinForm"
    Set Forms!DinForm.Recordset = rs

rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
Avatar billede faroe Nybegynder
27. maj 2002 - 11:40 #5
Det er fin, det kan jeg godt bruge. Men vis jeg skal bruge  connection til  Forespørgsel?
kan man det.
27. maj 2002 - 11:53 #6
Hmm, i forespørgsler kan du angive "Kilde" til hver tabel. I denne kilde kan du angive en connectionstring. Her kan du evt lege lidt med at sætte det samme ind:
driver={SQL Server};server=srv;uid=sa;pwd=pwd;database=Pubs
27. maj 2002 - 12:01 #7
Faroe, kan du ikke sige hvorfor du ikke vil bruge alm. ODBC og DNS? Det gør det 100 gange lettere...?
Avatar billede faroe Nybegynder
27. maj 2002 - 12:10 #8
Jeg har lavet et program som flere kunder  bruger , men de har forskellige navne på sql serveren  og password
so jeg har tænkt mej at første gang de starter programmet skal det komme en formular frem som de kan skrive navn på serveren, user og password ind.
Er det en fornuftigere løsning til det?
27. maj 2002 - 12:28 #9
Hmm, jeg tror at det bliver svært for dig at styre. Jeg har selv brugt uger (!) på at lave en procedure, som gennemløber alle tabeller og forespørgsler og ændre connectionstrengen i henhold til hver enkelt brugers server og DNS osv.
Denne kode kan for det første ikke beskrives med ord her, da det bla. indvolverer 2 formulare som er designet til formålet samt omkring 100 liniers kode eller mere.
Endvidere er det den slags kode, som jeg lever af at sælge til mine kunder, så den får du ikke bare sådan uden videre, hehe :o)

Umiddelbart er din eneste løsning at du enten selv tager rundt til brugerne og sletter alle tabeller og genopretter dem. Eller at du instruerer dem i at kunne gøre det selv.

Alternativt, så kan du jo hyre mig til at komme ud og implementere min funktion hos dig :o)
www.makeiteasy.dk
Avatar billede terry Ekspert
27. maj 2002 - 13:31 #10
faroe>have you thought about using NT Permissions?
You could make an NT Group then add the Group to SQL Server Logins. Then when you add users to the NT Group they automaitcally get permissions to the dB.
If ALL of your customers has the same NT Group then you would NOT need to alter anything!
Avatar billede fdata Forsker
27. maj 2002 - 14:23 #11
Du kunne jo også lægge kundernes connection string i en lille, lokal Access base. Første gang, brugerne forsøger at logge på SQL serveren med en ny frontend, genopfrisker de bare alle link v.h.a. denne streng.
27. maj 2002 - 15:54 #12
Hi Terry og FData,

Alt det duer vel ikke hvis man f.eks. skal distribuere en database til forskellige kunder, som har vidt forskellige SQL servere (altså navne på SQL serveren). I givet fald skal Faroe selv distribuere connectstring'en i en tabel, som systemet derefter kan bruge til at reattache med. Men han ved måske ikke altid hvordan kunden opsætning er.
Endvidere skal man også huske at ændre connectstring på eventuelle Pass-Through-queries, hvis der er sådanne.

Eller forstår jeg faroe's problem forkert?
Avatar billede terry Ekspert
27. maj 2002 - 17:52 #13
Hi Thomas>faroe has to get involved with security on the customers SQL Server so I cant see it being a big matter to set up a NT group permission. Then again it may be me that hastnt understood the problem.
Avatar billede fdata Forsker
28. maj 2002 - 23:55 #14
Er vi alle forvirrede?
Kundens parametre kan vel ligge hos kunden selv i f.eks. en Access base. De skal altså bare oprettes en gang for alle.
Første gang, der logges på med en ny frontend, genopfriskes alle link. Så langt så godt.
Alle Passthrough queries sendes gennem en lille rutine, der tilknytter den korrekte connection string (som dannes via de lokale parametre) inden selve kaldet.
Det funker fint hos en af vore kunder.
29. maj 2002 - 22:44 #15
faroe, har du fået kigget på det, som jeg har sendt dig?
Avatar billede faroe Nybegynder
29. maj 2002 - 22:46 #16
Ja :-)
Jeg har lige sent dej en mail
Avatar billede terry Ekspert
30. maj 2002 - 20:59 #17
faroe>can we have status on this?
Avatar billede faroe Nybegynder
31. maj 2002 - 09:51 #18
Jeg fik hjælp fra Thomas, han har laver en løsning til mej.
Men jeg takker for hjælpen og indsatsen, og deler point.
Avatar billede terry Ekspert
31. maj 2002 - 10:18 #19
great, og tak :o)
Avatar billede fdata Forsker
31. maj 2002 - 10:28 #20
"Thomas har lavet en løsning" - hvilken???
Er det en løsning, vi andre kan lære noget af?
Avatar billede faroe Nybegynder
31. maj 2002 - 13:15 #21
fdata > Det kommer Thomas til at bestemme, han har jo lavet løsningen.
31. maj 2002 - 20:52 #22
FData-> jeg har lavet en form for Wizard, som ved opstart af databasen kontrollerer om der er forbindelse til SQL serveren. Hvis der ikke er det, så bliver brugeren prompted med en dialogboks, hvor han kan indtaste servernavn og brugerinfo, hvorefter wizard'en selv sammensætter connectstrengen og reattacher alle tabeller og forespørgsler.
Alt sammen meget á la det, som du selv forslår. Bortset fra at brugeren her blot slipper for at oprette DNS (han har også muligheden for at vælge DNS, men behøver det ikke)
Denne løsning er velegnet hvis kunden ikke er IT-kyndig og/eller hvis kunden ikke skal have adgang bag om systemet. Det kan jo ikke forventes at Faroe altid kender brugerens opsætning, således at han kan distribuere connectstrengen i en Access-tabel sammen med applikationen.

Her er et pic af wizard'en: www.makeiteasy.dk/tj/wizard.jpg
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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