This document describes dynamic SQL and classes used in a client/server database application. It discusses how dynamic SQL statements are generated at runtime based on form controls and table names. Various classes are shown like clsSqlDbAccess for database access, clsWnd for windows, clsMdi for MDI forms, and clsTbl for tables. Methods are described for generating SQL statements, executing queries, and handling results based on messages between classes.
3. SQL HiA
Flerbrukersystem Client / Server
DatabaseDBMSDBMS
Application_2Application_2
SQL-Request
Data
Application_3Application_3
Application_1Application_1
Client Server
5. SQL HiA
RowID
RowID SNr Navn PNr
CAAD 5 Nilsen 5002
BACV 2 Olsen 6400
ERCB 1 Hansen 9000
EADD 4 Berg 6400
Selger (ID = SNr)
SNr Navn PNr
5 Nilsen 5002
2 Olsen 6400
1 Hansen 9000
4 Berg 6400
Selger (ID = SNr)
Et eksempel på en 3NF-tabell Selger
med tre kolonner
SNr, Navn og PNr
RowID er en ekstra kolonne i hver tabell
som alltid kommer i tillegg til de kolonnene
vi eksplisitt definerer.
RowID er entydig for hver rad
og fungerer som en slags identifikator.
7. SQL HiA
Statisk SQL
SNrID Navn PNr
5 Nilsen 5002
2 Olsen 6400
1 Hansen 9000
4 Berg 6400
Selger (ID = SNr)
SNrID
Navn
PNr
Select
SELECT SNrID, Navn, PNr
FROM Selger
Set sSelect = ‘SELECT SNrID, Navn, PNr INTO :dfnSNrID, :dfsNavn, dfnPNr
FROM Selger’
Call SqlPrepare ( hSql, sSelect )
Call SqlExecute ( hSql )
Call SqlFetchNext ( hSql, nFetch )
8. SQL HiA
Statisk SQL
SNrID
Navn
PNr
Select
SELECT SNrID, Navn, PNr
FROM Selger
SNrID
Navn
PNr
2
Select
SELECT Navn, PNr
FROM Selger
WHERE SNrID = :dfnSNrID
SNrID
Navn
PNr 6400
Select
SELECT SNrID, Navn
FROM Selger
WHERE PNr = :dfnPNr
SNrID
Navn
PNr
Nilsen
Select
SELECT SNrID, PNr
FROM Selger
WHERE Navn = :dfsNavn
SNrID
Navn
PNr
Nilsen
6400
Select
SELECT Navn, PNr
FROM Selger
WHERE Navn = :dfsNavn
AND PNr = : dfnPNr
SNrID
Navn
PNr
%sen
6400
Select
SELECT SNrID, Navn
FROM Selger
WHERE Navn LIKE ‘ || ‘’’ ||
dfsNavn || ‘’’
AND PNr = :dfnPNr
9. SQL HiA
Fra Statisk SQL til Dynamisk SQL
SNrID
Navn
PNr 6400
Select
SELECT SNrID, Navn, PNr
FROM Selger
WHERE PNr = :dfnPNr
Set sSelect = ‘SELECT SNrID, Navn, PNr INTO :dfnSNrID, :dfsNavn, dfnPNr
FROM Selger
WHERE PNr = :dfnPNr’
Set sSelect = ‘SELECT ‘ || sColumn || ‘ INTO ‘ || sInto ||
‘ FROM ‘ || sFrom
‘ WHERE ‘ || sWhere
frmSelger
sColumn = ‘SNrID, Navn, PNr’
sInto = ‘ :dfnSNrID, :dfsNavn, :dfnPNr’
sFrom = ‘Selger’
sWhere = ‘PNr = :dfnPNr’
10. SQL HiA
Dynamisk SQL - Initier SQL-variable
SNrID
Navn
PNr 6400
Select
frmSelger
dfnSNrID
dfsNavn
dfnPNr
pbSelect
pbSelect
On SAM_Click
Call SalSendMsg ( hWndForm, PAM_SELECT, 0, 0 )
frmSelger
Message Actions
On PAM_SELECT
Set sColumn = ‘‘
Set sInto = ‘‘
Set sFrom = ‘‘
Set sWhere = ‘‘
Call SalSendMsg ( hWndForm, PAM_SQL, 0, 0 )
Call SalSendMsgToChildren ( hWndForm, PAM_SQL, 0, 0 )
1
2