home *** CD-ROM | disk | FTP | other *** search
/ Programming Tool Box / SIMS_2.iso / bp_4_94 / vbwin / inisql / sql.txt < prev   
Text File  |  1995-02-26  |  5KB  |  164 lines

  1. '============================================================
  2. ' Projekt        : SQL-Abfragensteuerung mit Hilfe einer INI-Datei
  3. ' Modulname      : SQL.BAS
  4. ' Aufgabe        : Globale Deklarationen und Routinen
  5. ' Copyright      : Arthur Burda; SteingrΣber Fachverlag
  6. ' Compiler       : Visual Basic 3.0 fⁿr Windows
  7. '============================================================
  8. ' l. ─nderung am : 22.09.1994
  9. ' Version        : 1.00
  10. ' Bemerkungen    : Erste Implementierung
  11. '------------------------------------------------------------
  12.  
  13. Option Explicit
  14.  
  15. '------------------------------------------------------------
  16. ' globale Konstanten
  17. '------------------------------------------------------------
  18.  
  19. Global Const glb_DB_Name = "CITIES.MDB" ' Name der Datenbank-Datei
  20.  
  21. '------------------------------------------------------------
  22. ' globale Variablen
  23. '------------------------------------------------------------
  24.  
  25. Global glb_SQL_INI_Name$ ' Name der SQL-INI-Datei
  26.  
  27. '------------------------------------------------------------
  28. ' Deklaration der API-Funktionen
  29. '------------------------------------------------------------
  30.  
  31. Declare Function WritePrivateProfileString% Lib "Kernel" (ByVal lpAppName$, ByVal lpKeyName$, ByVal lpString$, ByVal lpFileName$)
  32. Declare Function GetPrivateProfileString Lib "Kernel" (ByVal lpAppName$, ByVal lpKeyName$, ByVal lpDefault$, ByVal lpRetString$, ByVal nSize%, ByVal lpFileName$) As Integer
  33.  
  34. '============================================================
  35. ' Routine : Get_INI_String
  36. '============================================================
  37. ' Aufgabe : Liefert einen String aus dem angegebenen Bereich
  38. '           und dem angegebenen Eintrag in einer INI-Datei.
  39. ' Eingabe : Section   = Bereich
  40. '           Item      = Eintrag
  41. '           Default   = Standard-String
  42. '           File_Name = Name der INI-Datei
  43. ' Ausgabe : keine
  44. ' Return  : Parameter vom Typ String
  45. '------------------------------------------------------------
  46. '
  47. Function Get_INI_String (Section$, Item$, Default$, File_Name$) As String
  48.  
  49.     Const Buf_Size = 2048 ' max. Anzahl Zeichen im Puffer
  50.  
  51.     Dim Buffer$ ' Puffer fⁿr den INI-String
  52.     Dim Copy_Bytes% ' Anzahl der in den Puffer kopierten Zeichen
  53.  
  54.     Get_INI_String = Default$
  55.     If File_Name$ <> "" Then
  56.         Buffer$ = String$(Buf_Size, 32) ' Puffer mit Leerzeichen fⁿllen
  57.         Copy_Bytes% = GetPrivateProfileString(Section$, Item$, Default$, Buffer$, Len(Buffer$), File_Name$) ' INI-String auslesen
  58.         If Copy_Bytes% > 0 Then Get_INI_String = Mid$(Buffer$, 1, Copy_Bytes%) ' Leerzeichen l÷schen
  59.     End If
  60.  
  61. End Function
  62.  
  63. '============================================================
  64. ' Routine : Get_SQL_Text
  65. '============================================================
  66. ' Aufgabe : Liefert den aus einzelnen EintrΣgen in der angege-
  67. '           benen Section der SQL-INI-Datei zusammengesetzten
  68. '           SQL-Text.
  69. ' Eingabe : Section = Bereich
  70. ' Ausgabe : keine
  71. ' Return  : SQL-Text
  72. '------------------------------------------------------------
  73. '
  74. Function Get_SQL_Text (Section$) As String
  75.  
  76.     Dim SQL_Text$
  77.     Dim Count%, i
  78.     Dim Continue
  79.     Dim Item$
  80.  
  81.     Static Param$(50) ' max. 50 Parameter pro SQL-Text in der SQL-INI-Datei
  82.  
  83.     SQL_Text$ = ""
  84.  
  85.     ' Parameter-Array initialisieren
  86.  
  87.     For i = 1 To 50
  88.         Param$(i) = ""
  89.     Next i
  90.  
  91.     Continue = True
  92.     Count% = 1
  93.  
  94.     ' SQL-Text aus einzelnen Parametern zusammenfⁿgen
  95.  
  96.     While Continue
  97.  
  98.         Item$ = Get_INI_String(Section$, Str$(Count%), "", glb_SQL_INI_Name)
  99.         If Item$ = "" Or Count% = 50 Then Continue = False
  100.  
  101.         If Item$ <> "" Then
  102.             SQL_Text$ = SQL_Text & " " & Item$
  103.         End If
  104.  
  105.         Count% = Count% + 1
  106.  
  107.     Wend
  108.  
  109.     ' SQL-Text zurⁿckliefern
  110.  
  111.     Get_SQL_Text = SQL_Text$
  112.  
  113. End Function
  114.  
  115. '============================================================
  116. ' Routine : Main
  117. '============================================================
  118. ' Aufgabe : Hauptroutine des Programms, die die SQL-Abfragen-
  119. '           steuerung mittels einer INI-Datei demonstriert.
  120. ' Eingabe : keine
  121. ' Ausgabe : keine
  122. '------------------------------------------------------------
  123. '
  124. Sub Main ()
  125.  
  126.     Dim DB As Database
  127.     Dim Snap As Snapshot
  128.     Dim SQL_Text$
  129.  
  130.     ChDir App.Path
  131.     glb_SQL_INI_Name$ = CurDir$ & "\SQL.INI"
  132.  
  133.     SQL_Text$ = Get_SQL_Text("StΣdte in Europa") ' SQL-Text aus INI-Datei lesen
  134.  
  135.     If SQL_Text$ <> "" Then
  136.  
  137.         MsgBox "SQL-Abfrage: StΣdte in Europa" & Chr$(13) & Chr$(13) & "SQL-Text:" & Chr$(13) & Chr$(13) & SQL_Text$
  138.  
  139.         ' Datenbank ÷ffnen und SQL-Abfrage als Snapshot erstellen
  140.  
  141.         Set DB = OpenDatabase(glb_DB_Name)
  142.         Set Snap = DB.CreateSnapshot(SQL_Text$)
  143.  
  144.         ' DatensΣtze nacheinander anzeigen
  145.  
  146.         If Snap.RecordCount > 0 Then
  147.             While Not Snap.EOF
  148.                 MsgBox "Stadt-ID: " & Snap("City_ID") & Chr$(13) & "Stadt: " & Snap("City") & Chr$(13) & "Land: " & Snap("Country") & Chr$(13) & "Kontinent: " & Snap("Continent")
  149.                 Snap.MoveNext
  150.             Wend
  151.         End If
  152.  
  153.         ' Snapshot und Datenbank schlie▀en
  154.     
  155.         Snap.Close
  156.         DB.Close
  157.  
  158.     Else
  159.         MsgBox "Kein SQL-Text fⁿr die Erstellung einer Abfrage vorhanden"
  160.     End If
  161.  
  162. End Sub
  163.  
  164.