08. april 2004 - 19:18Der er
6 kommentarer og 1 løsning
Access til SQL2000 - formular m. indtastning af brugernavn og pw
Jeg har en SQL server som backend og bruger access 2000 som frontend. Kan man lave en formular (frmLogin) hvor brugeren kan indtaste sit brugernavn og pw, så man dermed slipper for at få den prompt hvor der står "Det lykkedes ikke at oprette forbindelse"?
Jeg går ud fra at man skal oprette forbindelse til serveren i sin vba-kode til formularen? Jeg kender lidt til vba, men er bestemt ikke ekspert.
Hvis du benytter Windows Authentication i SQL Server vil brugeren aldrig skulle indtaste noget brugernavn password - Access vil læse det direkte fra den "logggede ind" bruger.
Hvis du vil bede om login skal du bruge SQL Server Authentication - men det er ikke anbefalelsesværdigt generelt.
Du kan godt lave en formular som, når brugeren klikker "Login" efter at have indtastet brugernavn og adgangskode, udføre denne kode:
Dim cn As ADODB.Connection Set cn = New ADODB.Connection cn.ConnectionString = "driver={SQL Server};server=DinServer;uid=" & Me!UID & ";pwd=" & Me!Pwd & ";database=DinDatabase" cn.ConnectionTimeout = 30 cn.Open If Err Then Msg "Der blev ikke oprettet forbindelse!@@Kontroller at du har tastet brugernavn og adgangskode korrekt ind.", vbCritical, "fejl i login!" cn.Close Set cn = Nothing Exit Sub End If DoEvents
Hvis du vil se et eks. på en formular, kan du gøre følgende: -Kopier al teksten i næste indlæg -Åbn Notepad og indsæt teksten -Gem det og kald filen for Login.txt på harddisken -Åbn en database og tryk Ctrl+G -Skriv: Application.LoadFromText acform, "Login", "C:\StiTilFilen\Login.txt" <Tryk ENTER>
Herefter har du formularen i din databasen. Gå i design og derefter ind i VBA-koden for formularen og skift værdien i konstanterne 'Servernavn' og 'Databasenavn'.
Version =19 VersionRequired =19 Checksum =794948991 Begin Form PopUp = NotDefault Modal = NotDefault RecordSelectors = NotDefault MaxButton = NotDefault MinButton = NotDefault ShortcutMenu = NotDefault AutoCenter = NotDefault NavigationButtons = NotDefault DividingLines = NotDefault AllowAdditions = NotDefault AllowDesignChanges = NotDefault DefaultView =0 AllowUpdating =2 ScrollBars =0 RecordLocks =2 TabularFamily =0 BorderStyle =3 PictureAlignment =2 DatasheetGridlinesBehavior =3 Cycle =1 GridY =10 Width =4875 DatasheetFontHeight =10 ItemSuffix =9 Left =9510 Top =4680 Right =16365 Bottom =10095 DatasheetGridlinesColor =12632256 OnUnload ="[Event Procedure]" RecSrcDt = Begin 0x21b998989321e240 End GUID = Begin 0x4e94207cf02d01448d6dcd301bf33b6a End NameMap = Begin 0x0acc0e55 End Caption ="Login" DatasheetFontName ="Arial" OnLoad ="[Event Procedure]" Begin Begin Label BackStyle =0 FontName ="Tahoma" End Begin Line Width =1701 End Begin Image BackStyle =0 OldBorderStyle =0 PictureAlignment =2 Width =1701 Height =1701 End Begin CommandButton Width =1701 Height =283 FontSize =8 FontWeight =400 ForeColor =-2147483630 FontName ="Tahoma" End Begin TextBox FELineBreak = NotDefault SpecialEffect =2 OldBorderStyle =0 Width =1701 LabelX =-1701 FontName ="Tahoma" End Begin Section Height =3118 BackColor =-2147483633 Name ="Detaljesektion" GUID = Begin 0x37b5c544c8ebd04aa91b9551e40d4e33 End Begin Begin TextBox OverlapFlags =85 Left =1907 Top =793 Width =2061 Name ="Uid" GUID = Begin 0x708aaf5fd232554191e929d76c98bcce End Begin Begin Label OverlapFlags =85 Left =566 Top =798 Width =975 Height =240 Name ="Etiket1" Caption ="Brugernavn:" GUID = Begin 0xcbc5cc7ff7657147bda1cd16137e4825 End End End End Begin TextBox OverlapFlags =85 Left =1907 Top =1190 Width =2061 TabIndex =1 Name ="Pwd" InputMask ="Password" OnGotFocus ="[Event Procedure]" GUID = Begin 0xac4f7ec57bc0eb4889d851bb0f4f3713 End Begin Begin Label OverlapFlags =85 Left =566 Top =1192 Width =1110 Height =240 Name ="Etiket3" Caption ="Adgangskode:" GUID = Begin 0xfc2a0f2f3f871549ae793853a47949ff End End End End Begin TextBox Enabled = NotDefault Locked = NotDefault TabStop = NotDefault OverlapFlags =85 Left =1907 Top =1587 Width =2061 TabIndex =2 BackColor =12632256 Name ="Server" GUID = Begin 0x44044989ea9c66419f25ebf769c60aa4 End Begin Begin Label OverlapFlags =85 Left =566 Top =1587 Width =615 Height =240 Name ="Etiket5" Caption ="Server:" GUID = Begin 0x8d0d9439316e9946b15b2b853edb80cd End End End End Begin CommandButton OverlapFlags =85 AccessKey =76 Left =2557 Top =2745 Width =1026 Height =343 TabIndex =3 Name ="cmdLogin" Caption ="&Login" OnClick ="[Event Procedure]" GUID = Begin 0x51a20a2b6034ea4fa005b3d7d9fccef2 End End Begin CommandButton OverlapFlags =85 AccessKey =65 Left =3725 Top =2738 Width =1026 Height =343 TabIndex =4 Name ="cmdAfslut" Caption ="&Afslut" OnClick ="[Event Procedure]" GUID = Begin 0x45ae38efed5c22498c329ea6ca508217 End End Begin Line OverlapFlags =85 SpecialEffect =3 Left =120 Top =2610 Width =4631 Name ="Streg8" GUID = Begin 0x5bb160e7def67645b044b73c61f0644b End End End End End End CodeBehindForm Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = True Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Option Compare Database Option Explicit
Dim Logon As Boolean Const Servernavn = "MinServer" Const Databasenavn = "MinDatabase"
Private Sub cmdAfslut_Click() On Error Resume Next DoCmd.Quit End Sub
Private Sub cmdLogin_Click() On Error Resume Next Dim cn As ADODB.Connection Set cn = New ADODB.Connection cn.ConnectionString = "driver={SQL Server};server=" & Servernavn & ";uid=" & Me!UID & ";pwd=" & Me!Pwd & ";database=" & Databasenavn cn.ConnectionTimeout = 30 cn.Open If Err Then msg "Der blev ikke oprettet forbindelse!@@Kontroller at du har tastet brugernavn og adgangskode korrekt ind.", vbCritical, "fejl i login!" cn.Close Set cn = Nothing Exit Sub End If DoEvents If Err = 0 Then SendKeys "%L" & Me!UID & "{TAB}" & Me!Pwd & "{ENTER}", False End If cn.Close Set cn = Nothing SaveSetting Databasenavn, "Login", "UID", Me!UID Logon = True DoCmd.Close acForm, Me.Name End Sub
Private Sub Form_Load() Me!UID = GetSetting(Databasenavn, "Login", "UID", "sa") Me!Server = Servernavn End Sub
Private Sub Form_Unload(Cancel As Integer) On Error Resume Next If Not Logon Then DoCmd.Quit End If End Sub
Private Sub Pwd_GotFocus() Me!cmdLogin.Default = True End Sub
næ, jeg tror ikke, at du misforstod noget og dit svar var da også relevant nok. Jeg tror bare at nhoff benytter "Mixed Mode", siden han spørger. Og derfor har jeg lavet en formular, som viser hvordan han kan få brugeren til at indtaste navn og adgangskode i en formular i stedet for den indbyggede (med dertilhørende fejl og mangler). Men lad dig ikke skræmme af de mange linier kode, som jeg har lagt. Det er blot en relativ simpel måde at overføre en hel formular via alm. tekst.
Jeg skal lige love for at der er service på drengen!! Tusind tak for et meget fyldestgørende svar!!
Synes godt om
Ny brugerNybegynder
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.