Avatar billede steensommer Praktikant
01. februar 2005 - 14:31 Der er 16 kommentarer og
1 løsning

Excel og SQL

Hej

Følgende kode fungerer helt efter hensigten og slår op i SQL server databasens (STEENS) tabel RFA. Den skal dog helst slå op i en FORESPØRGSEL: 2003Union - kan det ikke lade sig gøre?

Public Sub GetDataCPRRFA()

Dim strSQL As String
Dim Conn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim iBox As String

szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=\\server\faelles\Lotte og Susanne\Registre\Patientregisteret.mdb;"

iBox = InputBox("Indtast søgestreng")

    Set Conn = New ADODB.Connection
    Set Rs = New ADODB.Recordset

    Conn.Open "Provider=sqloledb;" & _
          "Data Source=STEENS;" & _
          "Initial Catalog=PatientregisteretSQL;" & _
          "Integrated Security=SSPI;"
   
    strSQL = "SELECT * FROM [RFA] WHERE [Cpr nr] LIKE '" & iBox & "%';"
    Rs.Open strSQL, Conn

    If Not Rs.EOF Then
      listen = TransposeDim(Rs.GetRows)
        With UserForm1
            .Caption = "Søgeresultat"
            .ListBox1.ColumnCount = 29
            .ListBox1.ColumnWidths = "35,20,55,80,65,115,80,55,50,35,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"
            .Show
        End With
     
      Rs.Close
    Else
        MsgBox "Ingen fundet", vbCritical
        UserForm1.ListBox1.Clear
        Rs.Close
    End If
       
    Set Rs = Nothing
   
End Sub
Vh Steen
Avatar billede lorentsnv Nybegynder
01. februar 2005 - 14:41 #1
Din database er vel MSDE, som er en SQL Server. Det skulle ikke være forsekl på at hente data fra tabel i forhold til view (forespørgsel).

Du skulle kunne bruge:
strSQL = "Select * from 2003Union"
Avatar billede steensommer Praktikant
01. februar 2005 - 14:57 #2
Nix det vil den IKKE acceptere (hvilket fungerer fint i Access)!
Avatar billede lorentsnv Nybegynder
01. februar 2005 - 15:00 #3
Så er det sansynligvis noget med rettigheder til dit view. Jeg mener bestemt at du skal kunne lave en vanlig select på et view.
Avatar billede steensommer Praktikant
01. februar 2005 - 15:02 #4
..men rettighederne til View er vel ikke anderledes end rettighederne til tabel?
Avatar billede lorentsnv Nybegynder
01. februar 2005 - 15:05 #5
Der kan også defineres rettigheder på et view.
Avatar billede steensommer Praktikant
01. februar 2005 - 15:06 #6
OK og hvordan gøres det?
Avatar billede lorentsnv Nybegynder
01. februar 2005 - 15:44 #7
GRANT SELECT on 2003Union to xxxx
Avatar billede lorentsnv Nybegynder
01. februar 2005 - 15:46 #8
Jeg går ud fra at du ikke har Enterprise Manager, da det ser ud til at du bruger MSDE. Jeg har ikke erfaring selv i at bruge denne, da jeg bruger den fulde SQL Server. Men du kan lave en Grant på dit view, hvor xxxx i GRANT SELECT on 2003Union to xxxx er navnet på en bruger.
Jeg kender ikke helt til hvor du kører en sql mod din database. Brugeren som kører denne sql mod databasen, skal også have rettigheder til at sette Grant-permission.
Avatar billede bak Forsker
01. februar 2005 - 17:33 #9
Nu vil jeg ikke kloge så meget i det her, da jeg ikke har adgang til ms sql men her er et bud.
Min vba vil ikke accepter navnet 2003union så den har jeg omdøbt til a2003union
jeg går ud fra at din forespørgsel indeholder  "SELECT * FROM [RFA] WHERE [Cpr nr] LIKE " + en parameter, hvor du vil indsætte indholdet af iBox og "%"

Public Sub GetDataCPRRFA()

Dim strSQL As String
Dim Conn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim iBox As String

'szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=\\server\faelles\Lotte og Susanne\Registre\Patientregisteret.mdb;"
    szConnect = "Provider=sqloledb;" & _
          "Data Source=STEENS;" & _
          "Initial Catalog=PatientregisteretSQL;" & _
          "Integrated Security=SSPI;"

    iBox = InputBox("Indtast søgestreng")

    Set Conn = New ADODB.Connection
    Set Rs = New ADODB.Recordset
    objConn.Open szConnect
    iBox = iBox & "%"
    objConn.a2003Union iBox, Rs
'Conn.Open "Provider=sqloledb;" & _
          "Data Source=STEENS;" & _
          "Initial Catalog=PatientregisteretSQL;" & _
          "Integrated Security=SSPI;"
   
'strSQL = "SELECT * FROM [RFA] WHERE [Cpr nr] LIKE '" & iBox & "%';"
'Rs.Open strSQL, Conn

    If Not Rs.EOF Then
      listen = TransposeDim(Rs.GetRows)
        With UserForm1
            .Caption = "Søgeresultat"
            .ListBox1.ColumnCount = 29
            .ListBox1.ColumnWidths = "35,20,55,80,65,115,80,55,50,35,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"
            .Show
        End With
     
      Rs.Close
    Else
        MsgBox "Ingen fundet", vbCritical
        UserForm1.ListBox1.Clear
        Rs.Close
    End If
       
    Set Rs = Nothing
   
End Sub
Avatar billede steensommer Praktikant
02. februar 2005 - 00:54 #10
Hej Bak

Jeg har prøvet det du har anført men får fejl ved ObjConn.Open szConnect
Avatar billede bak Forsker
02. februar 2005 - 08:16 #11
fejlskrivning fra min side. Har fået et obj for meget med :-)

Conn.Open szConnect
og
Conn.a2003Union iBox, Rs
Avatar billede steensommer Praktikant
02. februar 2005 - 08:30 #12
Efter rettelsen:
Procedure a2003Union has no parameters and arguments were supplied.

Iøvrigt hvor i SQL at der søges på Cpr-numre?
Avatar billede steensommer Praktikant
02. februar 2005 - 08:31 #13
Iøvrigt hvor i SQL ses at der søges på Cpr-numre? (det var da vist en bedre sætning :0)
Avatar billede bak Forsker
02. februar 2005 - 09:30 #14
Jeg er gået ud fra i eksemplet at du i SQL har lavet en forespørgsel der søger på cpr-numre og har sat fortalt den at cpr-nummeret er en parameter som du indgiver (via iBox). det er måske ikke rigtigt ?
Ellers skal jeg nok have det lavet lidt om.

objConn.a2003Union iBox, Rs
åbn connection med forespørgsel a2003Union med parameteren iBox og afleverer resultatet i Rs
Avatar billede steensommer Praktikant
02. februar 2005 - 10:32 #15
...men hvor ser man at der søges i feltet [Cpr nr]? I øvrigt er det rigtigt at iBox repræsenterer Cpr nr eller dele deraf!
Avatar billede steensommer Praktikant
02. februar 2005 - 15:17 #16
Hov jeg tror at vi alligevel har misforstået hinanden. a2003Union er en forespørgsel i Access (MS SQL Server) der sammensætter 3 forskellige tabeller. Det er udfra denne tabel at søgningen skal foregå for at få personer/patienter med fra alle 3 tabeller!
Avatar billede steensommer Praktikant
10. juli 2005 - 11:26 #17
Lukketid
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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