home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 1_2002.ISO / Data / Zips / CODE_UPLOAD1261812122000.psc / Server / Module1.bas < prev    next >
Encoding:
BASIC Source File  |  2000-12-12  |  6.3 KB  |  250 lines

  1. Attribute VB_Name = "Module1"
  2. Option Explicit
  3.  
  4. Public DB As ServerDatabase
  5.  
  6. Public Function ClientCall(Data As String, Index As Integer) As String
  7.  
  8.   Dim Methode As String
  9.   Dim mArray() As String
  10.   Dim ret As String
  11.   
  12.   mArray = Split(Data, "|")
  13.   Methode = mArray(0)
  14.   
  15.   Select Case Methode
  16.     Case "GetBuffer"
  17.       ret = GetBuffer(Index)
  18.     Case "NewBuffer"
  19.       ret = NewBuffer(Index)
  20.     Case "DeleteBuffer"
  21.       If TestArguments(mArray, 1, ret) = True Then ret = DeleteBuffer(Index, mArray(1))
  22.     Case "Selection"
  23.       If TestArguments(mArray, 2, ret) = True Then ret = Selection(Index, mArray(1), mArray(2))
  24.     Case "GetItem"
  25.       If TestArguments(mArray, 2, ret) = True Then ret = GetItem(Index, mArray(1), mArray(2))
  26.     Case Else
  27.       ret = "Unknown Command"
  28.   End Select
  29.  
  30.   ClientCall = ret
  31.  
  32. End Function
  33.  
  34. '******************************************************************************
  35. '* Functions
  36. '******************************************************************************
  37.  
  38. Private Function NewBuffer(ByVal Index As Integer) As String
  39.   
  40.   Dim Key As String
  41.   
  42.   With DB.Users(Index)
  43.     Key = GetKeyBuffer(Index)
  44.     .Buffers.Add "B" & Key
  45.     .Buffers("B" & Key).BufferKey = Key
  46.   End With
  47.   
  48.   NewBuffer = "Buffer " & Key & " created"
  49.     
  50. End Function
  51.  
  52. Private Function GetKeyBuffer(ByVal Index As Integer) As Integer
  53.  
  54.   Dim mBuffer As Buffer
  55.   Dim tmp As Integer
  56.   Dim nr As Integer
  57.   
  58.   With DB.Users(Index)
  59.     If .Buffers.count = 0 Then
  60.       nr = 1
  61.     Else
  62.       For Each mBuffer In .Buffers
  63.         tmp = mBuffer.BufferKey
  64.         If tmp > nr Then
  65.           nr = tmp
  66.         End If
  67.       Next
  68.       nr = nr + 1
  69.     End If
  70.   End With
  71.  
  72.   GetKeyBuffer = nr
  73.   
  74. End Function
  75.  
  76. Private Function DeleteBuffer(ByVal Index As Integer, ByVal Key As String)
  77.  
  78.   Dim mBuffer As Buffer
  79.   Dim tmp As String
  80.   Dim deleted As Boolean
  81.   
  82.   If TestBuffer(Index, BufIndex, tmp) = True Then
  83.     With DB.Users(Index)
  84.       For Each mBuffer In .Buffers
  85.         If mBuffer.BufferKey = Key Then
  86.           .Buffers.Remove "B" & Key
  87.           deleted = True
  88.           tmp = "Buffer " & Key & " deleted"
  89.         End If
  90.       Next
  91.       If deleted = False Then
  92.         tmp = "Can't allocate Buffer " & Key
  93.       End If
  94.     End With
  95.   End If
  96.   
  97.   DeleteBuffer = tmp
  98.  
  99. End Function
  100.  
  101. Private Function GetBuffer(ByVal Index As Integer) As String
  102.  
  103.   Dim mBuffer As Buffer
  104.   Dim tmp As String
  105.   
  106.   If TestBuffer(Index, BufIndex, tmp) = True Then
  107.     With DB.Users(Index)
  108.       tmp = "Buffer "
  109.       For Each mBuffer In .Buffers
  110.         tmp = tmp & mBuffer.BufferKey & ", "
  111.       Next
  112.       tmp = Mid(tmp, 1, Len(tmp) - 2)
  113.     End With
  114.   End If
  115.   
  116.   GetBuffer = tmp
  117.   
  118. End Function
  119.  
  120. Private Function Selection(ByVal Index As Integer, ByVal BufIndex As Integer, ByVal criteria As String) As String
  121.  
  122.   Dim mBuffer As Buffer
  123.   Dim tmp As String
  124.   Dim i As Long
  125.   Dim length As Integer
  126.   Dim wildcardfront As Boolean
  127.   Dim wildcardback As Boolean
  128.   
  129.   If TestBuffer(Index, BufIndex, tmp) = True Then
  130.     length = Len(criteria)
  131.     
  132.     If Left$(criteria, 1) = "*" Then
  133.       wildcardfront = True
  134.       length = length - 1
  135.       criteria = Mid$(criteria, 2)
  136.     End If
  137.     If Right$(criteria, 1) = "*" Then
  138.       wildcardback = True
  139.       length = length - 1
  140.       criteria = Mid$(criteria, 1, length)
  141.     End If
  142.     
  143.     With DB.Users(Index).Buffers(BufIndex)
  144.       .Clear
  145.       '------------------------------------------------------------------------
  146.       ' WildCards
  147.       If wildcardfront = False And wildcardback = False Then
  148.         For i = 0 To UBound(DBArray)
  149.           tmp = DBArray(i)
  150.           If Len(tmp) = length Then
  151.             If tmp = criteria Then
  152.               .Add tmp
  153.             End If
  154.           End If
  155.         Next i
  156.       ElseIf wildcardfront = False And wildcardback = True Then
  157.         For i = 0 To UBound(DBArray)
  158.           tmp = DBArray(i)
  159.           If Len(tmp) >= length Then
  160.             If Left$(tmp, length) = criteria Then
  161.               .Add tmp
  162.             End If
  163.           End If
  164.         Next i
  165.       ElseIf wildcardfront = True And wildcardback = False Then
  166.         For i = 0 To UBound(DBArray)
  167.           tmp = DBArray(i)
  168.           If Len(tmp) >= length Then
  169.             If Right$(tmp, length) = criteria Then
  170.               .Add tmp
  171.             End If
  172.           End If
  173.         Next i
  174.       Else
  175.         For i = 0 To UBound(DBArray)
  176.           tmp = DBArray(i)
  177.           If Len(tmp) >= length Then
  178.             If InStr(tmp, criteria) > 0 Then
  179.               .Add tmp
  180.             End If
  181.           End If
  182.         Next i
  183.       End If
  184.       '------------------------------------------------------------------------
  185.       tmp = .count & " Items selected"
  186.     End With
  187.   End If
  188.   
  189.   Selection = tmp
  190.   
  191. End Function
  192.  
  193. Private Function GetItem(ByVal Index As Integer, ByVal BufIndex As Integer, ByVal ItemIndex As Long)
  194.  
  195.   Dim tmp As String
  196.   
  197.   'Gets value from Buffer
  198.   If TestBuffer(Index, BufIndex, tmp) = True Then
  199.     tmp = DB.Users(Index).Buffers(BufIndex).Item(ItemIndex)
  200.   End If
  201.   
  202.   GetItem = tmp
  203.  
  204. End Function
  205.  
  206. '******************************************************************************
  207. '* Test-Functions
  208. '******************************************************************************
  209.  
  210. Private Function TestArguments(ByRef arr() As String, ByVal count As Integer, ByRef error As String) As Boolean
  211.  
  212.   Dim value As Integer
  213.   
  214.   value = UBound(arr)
  215.   
  216.   'Test if there are all needed arguments
  217.   If value < count Then
  218.     error = "Missing argument"
  219.   ElseIf value > count Then
  220.     error = "Too many arguments"
  221.   Else
  222.     TestArguments = True
  223.   End If
  224.  
  225. End Function
  226.  
  227. Private Function TestBuffer(ByVal Index As Integer, ByVal BufIndex As Integer, ByRef error As String) As Boolean
  228.   
  229.   Dim mBuffer As Buffer
  230.   
  231.   TestBuffer = False
  232.   
  233.   'Test if there are any Buffers allocated
  234.   If DB.Users(Index).Buffers.count = 0 Then
  235.     error = "No Buffers allocated"
  236.     Exit Function
  237.   End If
  238.   
  239.   'Test if the BufIndex (Key) exists
  240.   For Each mBuffer In DB.Users(Index).Buffers
  241.     If mBuffer.BufferKey = BufIndex Then
  242.       TestBuffer = True
  243.       Exit Function
  244.     End If
  245.   Next
  246.       
  247.   error = "Buffer " & BufIndex & " is not valid"
  248.     
  249. End Function
  250.