home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Programming Tool Box
/
SIMS_2.iso
/
bp_6_93
/
vbwin
/
inisql
/
sql.bas
< prev
next >
Wrap
BASIC Source File
|
1994-10-24
|
5KB
|
164 lines
'============================================================
' Projekt : SQL-Abfragensteuerung mit Hilfe einer INI-Datei
' Modulname : SQL.BAS
' Aufgabe : Globale Deklarationen und Routinen
' Copyright : Arthur Burda; SteingrΣber Fachverlag
' Compiler : Visual Basic 3.0 fⁿr Windows
'============================================================
' l. ─nderung am : 22.09.1994
' Version : 1.00
' Bemerkungen : Erste Implementierung
'------------------------------------------------------------
Option Explicit
'------------------------------------------------------------
' globale Konstanten
'------------------------------------------------------------
Global Const glb_DB_Name = "CITIES.MDB" ' Name der Datenbank-Datei
'------------------------------------------------------------
' globale Variablen
'------------------------------------------------------------
Global glb_SQL_INI_Name$ ' Name der SQL-INI-Datei
'------------------------------------------------------------
' Deklaration der API-Funktionen
'------------------------------------------------------------
Declare Function WritePrivateProfileString% Lib "Kernel" (ByVal lpAppName$, ByVal lpKeyName$, ByVal lpString$, ByVal lpFileName$)
Declare Function GetPrivateProfileString Lib "Kernel" (ByVal lpAppName$, ByVal lpKeyName$, ByVal lpDefault$, ByVal lpRetString$, ByVal nSize%, ByVal lpFileName$) As Integer
'============================================================
' Routine : Get_INI_String
'============================================================
' Aufgabe : Liefert einen String aus dem angegebenen Bereich
' und dem angegebenen Eintrag in einer INI-Datei.
' Eingabe : Section = Bereich
' Item = Eintrag
' Default = Standard-String
' File_Name = Name der INI-Datei
' Ausgabe : keine
' Return : Parameter vom Typ String
'------------------------------------------------------------
'
Function Get_INI_String (Section$, Item$, Default$, File_Name$) As String
Const Buf_Size = 2048 ' max. Anzahl Zeichen im Puffer
Dim Buffer$ ' Puffer fⁿr den INI-String
Dim Copy_Bytes% ' Anzahl der in den Puffer kopierten Zeichen
Get_INI_String = Default$
If File_Name$ <> "" Then
Buffer$ = String$(Buf_Size, 32) ' Puffer mit Leerzeichen fⁿllen
Copy_Bytes% = GetPrivateProfileString(Section$, Item$, Default$, Buffer$, Len(Buffer$), File_Name$) ' INI-String auslesen
If Copy_Bytes% > 0 Then Get_INI_String = Mid$(Buffer$, 1, Copy_Bytes%) ' Leerzeichen l÷schen
End If
End Function
'============================================================
' Routine : Get_SQL_Text
'============================================================
' Aufgabe : Liefert den aus einzelnen EintrΣgen in der angege-
' benen Section der SQL-INI-Datei zusammengesetzten
' SQL-Text.
' Eingabe : Section = Bereich
' Ausgabe : keine
' Return : SQL-Text
'------------------------------------------------------------
'
Function Get_SQL_Text (Section$) As String
Dim SQL_Text$
Dim Count%, i
Dim Continue
Dim Item$
Static Param$(50) ' max. 50 Parameter pro SQL-Text in der SQL-INI-Datei
SQL_Text$ = ""
' Parameter-Array initialisieren
For i = 1 To 50
Param$(i) = ""
Next i
Continue = True
Count% = 1
' SQL-Text aus einzelnen Parametern zusammenfⁿgen
While Continue
Item$ = Get_INI_String(Section$, Str$(Count%), "", glb_SQL_INI_Name)
If Item$ = "" Or Count% = 50 Then Continue = False
If Item$ <> "" Then
SQL_Text$ = SQL_Text & " " & Item$
End If
Count% = Count% + 1
Wend
' SQL-Text zurⁿckliefern
Get_SQL_Text = SQL_Text$
End Function
'============================================================
' Routine : Main
'============================================================
' Aufgabe : Hauptroutine des Programms, die die SQL-Abfragen-
' steuerung mittels einer INI-Datei demonstriert.
' Eingabe : keine
' Ausgabe : keine
'------------------------------------------------------------
'
Sub Main ()
Dim DB As Database
Dim Snap As Snapshot
Dim SQL_Text$
ChDir App.Path
glb_SQL_INI_Name$ = CurDir$ & "\SQL.INI"
SQL_Text$ = Get_SQL_Text("StΣdte in Europa") ' SQL-Text aus INI-Datei lesen
If SQL_Text$ <> "" Then
MsgBox "SQL-Abfrage: StΣdte in Europa" & Chr$(13) & Chr$(13) & "SQL-Text:" & Chr$(13) & Chr$(13) & SQL_Text$
' Datenbank ÷ffnen und SQL-Abfrage als Snapshot erstellen
Set DB = OpenDatabase(glb_DB_Name)
Set Snap = DB.CreateSnapshot(SQL_Text$)
' DatensΣtze nacheinander anzeigen
If Snap.RecordCount > 0 Then
While Not Snap.EOF
MsgBox "Stadt-ID: " & Snap("City_ID") & Chr$(13) & "Stadt: " & Snap("City") & Chr$(13) & "Land: " & Snap("Country") & Chr$(13) & "Kontinent: " & Snap("Continent")
Snap.MoveNext
Wend
End If
' Snapshot und Datenbank schlie▀en
Snap.Close
DB.Close
Else
MsgBox "Kein SQL-Text fⁿr die Erstellung einer Abfrage vorhanden"
End If
End Sub