Avatar billede noem Nybegynder
05. september 2005 - 10:29 Der er 4 kommentarer og
1 løsning

problemer med propbag

Hej Eksperter..

jeg har et lille problem med at få propbag til at virke med min activex application

Jeg har haft det til at virke, men har ændret et eller andet så det ikke virker (spørg mig ikke hvad)..

nogle der lige kan se hvorfor mine ServernNavn, DatabaseNavn og QueryNavn er tomme ?

'Option Explicit
Dim ServerNavn, Test As String 'Skal evt slettes
Dim DatabaseNavn As String 'Skal evt slettes
Dim QueryNavn As String 'Skal evt slettes
Dim Kol As Integer ' Antal kolonner
Dim raek As Integer ' Antal rækker

    Dim Con As New ADODB.Connection
    Dim Query1 As New ADODB.Recordset
    Dim fld As ADODB.Field
Public Property Get Server() As Variant

Server = ServerNavn


End Property

Public Property Let Server(ByVal vNewValue As Variant)

ServerNavn = vNewValue
Test = ServerNavn
PropertyChanged 'Opdatere PropBag
MsgBox ServerNavn


End Property


Public Property Get Database()

  Database = DatabaseNavn 'Database
   
End Property

Public Property Let Database(ByVal vNewValue As Variant)

    DatabaseNavn = vNewValue
    PropertyChanged 'Opdatere PropBag
   
End Property

Public Property Get Query()

  Query = QueryNavn
 
  End Property

Public Property Let Query(ByVal vNewValue As Variant)

    QueryNavn = vNewValue
    PropertyChanged 'Opdatere PropBag
   
End Property

Public Sub forbind()
  'On Error GoTo errh

MsgBox "Provider=sqloledb;Data Source=" & Test & ";Initial Catalog=" & DatabaseNavn & ";User Id=erg;Password=erg;"
If ServerNavn = "" Or DatabaseNavn = "" Or QueryNavn = "" Then

Exit Sub
Else

Con.ConnectionString = "Provider=sqloledb;Data Source=" & ServerNavn & ";Initial Catalog=" & DatabaseNavn & ";User Id=erg;Password=erg;"
Con.Open
End If

Exit Sub
errh:
   
    MsgBox "Fejl Ved forbindelse" & vbNewLine & Err.Description

End Sub

Private Sub UserControl_Initialize()
'On Error GoTo errh:

    'MsgBox "server: " & Server & vbNewLine & "DataBase: " & Database & vbNewLine & "Query: " & Query ' ConnectionString
    forbind ' Forbinde til SQL database
    ' If Con.State = 0 Then
      If True Then
     
        Debug.Print "Forbindelse ikke oprettet"
        Debug.Print "server: " & ServerNavn
        Debug.Print "Databse: " & DatabaseNavn
        Debug.Print "String: " & QueryNavn
   
    Else
   
    Set Query1 = Con.Execute(Query)
   
   
    ' Henter de Forskellige kolonner
    Kol = 0
   
    'Resætter position i Grid
 
    Grid1.FixedRows = 1
    Grid1.FixedCols = 0
   
    Grid1.Row = 1
    Grid1.Col = 1
   
    Grid1.Cols = 0
    Grid1.Rows = 1
   
    ' Sætter overskrifen på de forskellige kolonner :)
    For Each fld In Query1.Fields
     
        Grid1.Cols = Grid1.Cols + 1
        Grid1.Text = fld.Name
      ' Grid1.Col = 1
       
        Dim COLPOS As Integer
        COLPOS = Grid1.Cols - 1
        Grid1.Col = COLPOS
       
        Kol = Kol + 1
   
    Next fld
    Grid1.Cols = Grid1.Cols - 1
   
'' Dannelse af additem string..
Dim I1 As Integer
Dim AddString As String
AddString = ""
I1 = 0

For I1 = 1 To Kol - 1

    If I1 = 1 Then
      AddString = Query1.Fields(I1)
          Else
      AddString = AddString & vbTab & Query1.Fields(I1)
    End If

Next

Do While Not Query1.EOF

        Grid1.AddItem (AddString)
        'Grid1.Rows = Grid1.Rows + 1 ' Laver en Række til hentet data :)
       
        Query1.MoveNext ' Næste id
    Loop
    Con.Close

    End If
   
Exit Sub

errh:
    MsgBox "Fejl:" & vbNewLine & Err.Description
   
End Sub

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
   
    ServerNavn = PropBag.ReadProperty("Server", "")
    DatabaseNavn = PropBag.ReadProperty("database", "")
    QueryNavn = PropBag.ReadProperty("query", "")
   
End Sub

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)

    PropBag.WriteProperty "Server", ServerNavn, ""
    PropBag.WriteProperty "database", DatabaseNavn, ""
    PropBag.WriteProperty "query", QueryNavn, ""

End Sub
Avatar billede sjh Nybegynder
08. september 2005 - 11:18 #1
det her virker i så fald..


Option Explicit

'Default Property Values:
Const m_def_QueryNavn    As String = ""
Const m_def_ServerNavn  As String = ""
Const m_def_DatabaseNavn As String = ""

'Property Variables:
Private m_QueryNavn    As String
Private m_ServerNavn  As String
Private m_DatabaseNavn As String

Public Property Get QueryNavn() As String
  QueryNavn = m_QueryNavn
End Property

Public Property Let QueryNavn(ByVal strValue As String)
  m_QueryNavn = strValue
  PropertyChanged "QueryNavn"
End Property

Public Property Get ServerNavn() As String
  ServerNavn = m_ServerNavn
End Property

Public Property Let ServerNavn(ByVal strValue As String)
  m_ServerNavn = strValue
  PropertyChanged "ServerNavn"
End Property

Public Property Get DatabaseNavn() As String
  DatabaseNavn = m_DatabaseNavn
End Property

Public Property Let DatabaseNavn(ByVal strValue As String)
  m_DatabaseNavn = strValue
  PropertyChanged "DatabaseNavn"
End Property

Private Sub UserControl_InitProperties()
  m_QueryNavn = m_def_QueryNavn
  m_ServerNavn = m_def_ServerNavn
  m_DatabaseNavn = m_def_DatabaseNavn
End Sub

'Load property values from storage
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  m_QueryNavn = PropBag.ReadProperty("QueryNavn", m_def_QueryNavn)
  m_ServerNavn = PropBag.ReadProperty("ServerNavn", m_def_ServerNavn)
  m_DatabaseNavn = PropBag.ReadProperty("DatabaseNavn", m_def_DatabaseNavn)
End Sub

'Write property values to storage
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
  Call PropBag.WriteProperty("QueryNavn", m_QueryNavn, m_def_QueryNavn)
  Call PropBag.WriteProperty("ServerNavn", m_ServerNavn, m_def_ServerNavn)
  Call PropBag.WriteProperty("DatabaseNavn", m_DatabaseNavn, m_def_DatabaseNavn)
End Sub
Avatar billede sjh Nybegynder
08. september 2005 - 11:23 #2
tror det er fordi du dimer (dim) samme navn som funktion navn.. det kan man ikke.. :D

Dim ServerNavn

Public Property Get ServerNavn() As String
  ServerNavn = m_ServerNavn
End Property
....
Avatar billede noem Nybegynder
12. september 2005 - 08:59 #3
hmm nu er jeg nået hertil, men m_ServerNavn, m_QueryNavn, m_DatabaseNavn er stadigvæk tomme ? jeg er helt tom for idéer ?

Option Explicit
Dim Kol As Integer ' Antal kolonner
Dim raek As Integer ' Antal rækker

    Dim Con As New ADODB.Connection
    Dim Query1 As New ADODB.Recordset
    Dim fld As ADODB.Field
   
Dim Query As String
'Property Variables
Private m_ServerNavn    As String
Private m_QueryNavn    As String
Private m_DatabaseNavn As String

'Default Property Values:
Const m_def_QueryNavn    As String = ""
Const m_def_ServerNavn  As String = ""
Const m_def_DatabaseNavn As String = ""
Public Property Get QueryNavn() As String

  QueryNavn = m_QueryNavn
End Property

Public Property Let QueryNavn(ByVal strValue As String)
  m_QueryNavn = strValue
  PropertyChanged "QueryNavn"
End Property

Public Property Get ServerNavn() As String
  ServerNavn = m_ServerNavn
End Property

Public Property Let ServerNavn(ByVal strValue As String)
  m_ServerNavn = strValue
  PropertyChanged "ServerNavn"
End Property

Public Property Get DatabaseNavn() As String
  DatabaseNavn = m_DatabaseNavn
End Property

Public Property Let DatabaseNavn(ByVal strValue As String)
  m_DatabaseNavn = strValue
  PropertyChanged "DatabaseNavn"
End Property
Public Sub forbind()
  'On Error GoTo errh

MsgBox m_ServerNavn & ServerNavn
If ServerNavn = "" Or DatabaseNavn = "" Or QueryNavn = "" Then

Exit Sub
Else

Con.ConnectionString = "Provider=sqloledb;Data Source=" & ServerNavn & ";Initial Catalog=" & DatabaseNavn & ";User Id=erg;Password=erg;"
Con.Open
End If

Exit Sub
errh:
   
    MsgBox "Fejl Ved forbindelse" & vbNewLine & Err.Description

End Sub

Private Sub UserControl_Initialize()
'On Error GoTo errh:

    'MsgBox "server: " & Server & vbNewLine & "DataBase: " & Database & vbNewLine & "Query: " & Query ' ConnectionString
    forbind ' Forbinde til SQL database
    ' If Con.State = 0 Then
      If True Then
     
        Debug.Print "Forbindelse ikke oprettet"
        Debug.Print "server: " & ServerNavn
        Debug.Print "Databse: " & DatabaseNavn
        Debug.Print "String: " & QueryNavn
   
    Else
   
    Set Query1 = Con.Execute(Query)
   
   
    ' Henter de Forskellige kolonner
    Kol = 0
   
    'Resætter position i Grid
 
    Grid1.FixedRows = 1
    Grid1.FixedCols = 0
   
    Grid1.Row = 1
    Grid1.Col = 1
   
    Grid1.Cols = 0
    Grid1.Rows = 1
   
    ' Sætter overskrifen på de forskellige kolonner :)
    For Each fld In Query1.Fields
     
        Grid1.Cols = Grid1.Cols + 1
        Grid1.Text = fld.Name
      ' Grid1.Col = 1
       
        Dim COLPOS As Integer
        COLPOS = Grid1.Cols - 1
        Grid1.Col = COLPOS
       
        Kol = Kol + 1
   
    Next fld
    Grid1.Cols = Grid1.Cols - 1
   
'' Dannelse af additem string..
Dim I1 As Integer
Dim AddString As String
AddString = ""
I1 = 0

For I1 = 1 To Kol - 1

    If I1 = 1 Then
      AddString = Query1.Fields(I1)
          Else
      AddString = AddString & vbTab & Query1.Fields(I1)
    End If

Next

Do While Not Query1.EOF

        Grid1.AddItem (AddString)
        'Grid1.Rows = Grid1.Rows + 1 ' Laver en Række til hentet data :)
       
        Query1.MoveNext ' Næste id
    Loop
    Con.Close

    End If
   
Exit Sub

errh:
    MsgBox "Fejl:" & vbNewLine & Err.Description
   
End Sub
'Load property values from storage
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  m_QueryNavn = PropBag.ReadProperty("QueryNavn", m_def_QueryNavn)
  m_ServerNavn = PropBag.ReadProperty("ServerNavn", m_def_ServerNavn)
  m_DatabaseNavn = PropBag.ReadProperty("DatabaseNavn", m_def_DatabaseNavn)
End Sub

'Write property values to storage
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
  Call PropBag.WriteProperty("QueryNavn", m_QueryNavn, m_def_QueryNavn)
  Call PropBag.WriteProperty("ServerNavn", m_ServerNavn, m_def_ServerNavn)
  Call PropBag.WriteProperty("DatabaseNavn", m_DatabaseNavn, m_def_DatabaseNavn)
End Sub
Avatar billede sjh Nybegynder
12. september 2005 - 17:06 #4
du kan ikke læse dem under UserControl_Initialize()


Private Sub UserControl_Paint()
  Debug.Print "server: " & ServerNavn
  Debug.Print "Databse: " & DatabaseNavn
  Debug.Print "String: " & QueryNavn
End Sub

Private Sub UserControl_Show()
  Debug.Print "server: " & ServerNavn
  Debug.Print "Databse: " & DatabaseNavn
  Debug.Print "String: " & QueryNavn
End Sub
Avatar billede noem Nybegynder
13. september 2005 - 09:03 #5
mange tak for hjælpen :) det virker nu
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