Imports System.Data.SQLite Public Class clsZuteilung Dim ds As New DataSet Dim daten As New DataSet Dim SQLconnect As New SQLite.SQLiteConnection() Dim dt As New DataTable Dim da As New SQLiteDataAdapter("", SQLconnect) Dim clsallg As New clsAllgemein Public Function Get_Uebersicht(ByRef dt As DataTable) Dim sql As String = clsallg.Get_SQLAbfrage_Statement(3) SQLconnect.ConnectionString = Globals.Datenbank SQLconnect.Open() Dim sqlcmd As New SQLiteCommand sqlcmd.Connection = SQLconnect Try sqlcmd.CommandType = CommandType.Text sqlcmd.CommandText = sql da.SelectCommand = sqlcmd da.Fill(ds, "Zuget") Catch ex As Exception MsgBox(ex.Message) End Try dt = ds.Tables(0) SQLconnect.Close() End Function Public Function Get_Uebersicht(ByRef dt As DataTable, ByVal Schuelernr As Integer) Dim sql As String = clsallg.Get_SQLAbfrage_Statement(4) sql = sql.Replace("[Where]", " where schueler.schuelernr=" + Schuelernr.ToString + " ") Try SQLconnect.ConnectionString = Globals.Datenbank Catch End Try Try SQLconnect.Open() Catch End Try Dim sqlcmd As New SQLiteCommand sqlcmd.Connection = SQLconnect Try ds.Tables.Clear() sqlcmd.CommandType = CommandType.Text sqlcmd.CommandText = sql da.SelectCommand = sqlcmd da.Fill(ds, "Zuget") Catch ex As Exception MsgBox(ex.Message) End Try dt = ds.Tables(0) SQLconnect.Close() End Function Public Function Update_Zuteilung(ByRef r As DataRow) Dim sqlcmd As New SQLiteCommand sqlcmd.Connection = SQLconnect SQLconnect.Open() sqlcmd.CommandType = CommandType.Text If r.Item("Aktiv") = False Then sqlcmd.CommandText = "update zuteilung set aktiv=0 where eintragnr=" + r.Item("eintragnr").ToString Else sqlcmd.CommandText = "update zuteilung set aktiv=1 where eintragnr=" + r.Item("eintragnr").ToString End If sqlcmd.ExecuteNonQuery() SQLconnect.Close() End Function Public Function Ist_Zugeteilt(ByVal SchuelerBerufNr As Integer) As Boolean Dim sqlcmd As New SQLiteCommand sqlcmd.Connection = SQLconnect sqlcmd.CommandType = CommandType.Text sqlcmd.CommandText = "Select count(*) from zuteilung where aktiv=1 and schuelerberufnr=" + Str(SchuelerBerufNr) Try SQLconnect.Open() Catch ex As Exception End Try Dim result As Boolean = False Dim SQLreader As SQLiteDataReader = sqlcmd.ExecuteReader() While SQLreader.Read() If SQLreader(0).ToString = "0" Then result = False Else result = True End While sqlcmd.Dispose() SQLconnect.Close() Return result End Function Public Function Summe_Verfügbare_Berufe(ByVal Berufnr As Integer) As Integer Dim sqlcmd As New SQLiteCommand sqlcmd.Connection = SQLconnect sqlcmd.CommandType = CommandType.Text sqlcmd.CommandText = "SELECT sum(anzahl) from firmaberuf where berufnr=" + Berufnr.ToString SQLconnect.Open() Dim result As Integer = 0 Dim SQLreader As SQLiteDataReader = sqlcmd.ExecuteReader() While SQLreader.Read() Try result = SQLreader(0).ToString Catch ex As Exception result = 0 End Try End While sqlcmd.Dispose() SQLconnect.Close() Return result End Function Public Function Summe_Zugeteilter_Berufe(ByVal Berufnr As Integer) As Integer Dim sqlcmd As New SQLiteCommand sqlcmd.Connection = SQLconnect sqlcmd.CommandType = CommandType.Text ' ' sqlcmd.CommandText = "SELECT count(eintragnr) FROM zuteilung INNER JOIN firmaberuf ON (zuteilung.firmaberufnr = firmaberuf.FirmaBerufNr) WHERE zuteilung.aktiv = 1 AND firmaberuf.berufnr=" + Berufnr.ToString SQLconnect.Open() Dim result As Integer = 0 Dim SQLreader As SQLiteDataReader = sqlcmd.ExecuteReader() While SQLreader.Read() Try result = SQLreader(0).ToString Catch ex As Exception result = 0 End Try End While sqlcmd.Dispose() SQLconnect.Close() Return result End Function Public Function Get_Reservierte_Plätze(ByVal Berufnr As Integer) As DataTable Dim sql As String = clsallg.Get_SQLAbfrage_Statement(7) sql = sql + Berufnr.ToString SQLconnect.ConnectionString = Globals.Datenbank SQLconnect.Open() Dim sqlcmd As New SQLiteCommand sqlcmd.Connection = SQLconnect Try ds.Tables.Clear() sqlcmd.CommandType = CommandType.Text sqlcmd.CommandText = sql da.SelectCommand = sqlcmd da.Fill(ds, "Reserviert") Catch ex As Exception MsgBox(ex.Message) End Try SQLconnect.Close() Return ds.Tables(0) End Function Public Function Get_Freie_Plätze(ByVal Berufnr As Integer) As DataTable 'Angebot auslesen Dim dtAngebot As New DataTable Dim sql As String = "Select * from FirmaBeruf where aktiv=1 and Berufnr=" + Berufnr.ToString SQLconnect.ConnectionString = Globals.Datenbank SQLconnect.Open() Dim sqlcmd As New SQLiteCommand sqlcmd.Connection = SQLconnect Try ds.Tables.Clear() sqlcmd.CommandType = CommandType.Text sqlcmd.CommandText = sql da.SelectCommand = sqlcmd da.Fill(ds, "Angebot") Catch ex As Exception MsgBox(ex.Message) End Try dtAngebot = ds.Tables(0) Dim dtZugeteilt As New DataTable sql = "SELECT Zuteilung.*, FirmaBeruf.FirmaBerufnr FROM zuteilung INNER JOIN firmaberuf ON (zuteilung.firmaberufnr = firmaberuf.FirmaBerufNr) WHERE zuteilung.aktiv = 1 AND firmaberuf.berufnr=" + Berufnr.ToString Try ds.Tables.Clear() sqlcmd.CommandType = CommandType.Text sqlcmd.CommandText = sql da.SelectCommand = sqlcmd da.Fill(ds, "Zugeteilt") Catch ex As Exception MsgBox(ex.Message) End Try dtZugeteilt = ds.Tables(0) For Each r As DataRow In dtZugeteilt.Rows For Each rr As DataRow In dtAngebot.Rows If r.Item("FirmaBerufNr") = rr.Item("Firmaberufnr") Then If r.Item("ZeitNr") = rr.Item("Zeitnr") Then If r.Item("Ansprechpartnernr") = rr.Item("Ansprechpartnernr") Then rr.Item("Anzahl") = rr.Item("Anzahl") - 1 End If End If Next Next For Each r As DataRow In dtAngebot.Rows If r.Item("Anzahl") = 0 Then r.Delete() Next dtAngebot.AcceptChanges() Dim dtFreiePlätze As New DataTable Dim first As Boolean = True For Each r As DataRow In dtAngebot.Rows sql = "SELECT Firma.FirmaNr,Firma.NameZ1,FirmaBeruf.ZeitNr, firmaberuf.firmaberufnr,Zeiten.Bezeichnung, 0 as Anzahl, Ansprechpartner.AnsprechpartnerNr, Ansprechpartner.Name || " + """" + " " + """" + " || Ansprechpartner.Vorname As Ansprechpartner FROM Firma INNER JOIN FirmaBeruf ON (Firma.FirmaNr = FirmaBeruf.FirmaNr)" sql = sql + " INNER JOIN Zeiten ON (FirmaBeruf.ZeitNr = Zeiten.ZeitNr) INNER JOIN Ansprechpartner ON (Firma.FirmaNr = Ansprechpartner.FirmaNr) where firmaberuf.firmaberufnr=" + r.Item("FirmaBerufnr").ToString + " and ansprechpartner.ansprechpartnernr=" + r.Item("Ansprechpartnernr").ToString Try ds.Tables.Clear() sqlcmd.CommandType = CommandType.Text sqlcmd.CommandText = sql da.SelectCommand = sqlcmd da.Fill(ds, "Angebot") Catch ex As Exception MsgBox(ex.Message) End Try If first Then dtFreiePlätze = ds.Tables(0).Copy first = False Else For Each r1 As DataRow In ds.Tables(0).Rows Dim datar As DataRow datar = dtFreiePlätze.NewRow For Each s As DataColumn In dtFreiePlätze.Columns datar.Item(s.ColumnName) = r1.Item(s.ColumnName) Next dtFreiePlätze.Rows.Add(datar) Next End If For Each r2 As DataRow In dtFreiePlätze.Rows If r2.Item("FirmaBerufnr") = r.Item("FirmaBerufnr") Then r2.Item("Anzahl") = r.Item("Anzahl") End If Next Next SQLconnect.Close() Return dtFreiePlätze End Function Public Function Insert_Zuteilung(ByVal fbnr As Integer, ByVal sbnr As Integer, ByVal snr As Integer, ByVal prio As Integer, ByVal zeitnr As Integer, ByVal ansprechpartnernr As Integer) Dim lpdataset As New LPDataSet Dim lpzuteilungadapter = New LPDataSetTableAdapters.ZuteilungTableAdapter Dim i As Integer = 0 Dim counter As Integer = 0 Dim zuteilungrow As LPDataSet.ZuteilungRow zuteilungrow = lpdataset.Zuteilung.NewRow zuteilungrow.FirmaBerufNr = fbnr zuteilungrow.SchuelerBerufNr = sbnr zuteilungrow.SchuelerNr = snr zuteilungrow.Zeitnr = zeitnr zuteilungrow.Ansprechpartnernr = ansprechpartnernr zuteilungrow.Prioritaet = prio zuteilungrow.aktiv = True zuteilungrow.erstellt_am = Now zuteilungrow.mutiert_am = Now zuteilungrow.Bemerkung = "" lpdataset.Zuteilung.AddZuteilungRow(zuteilungrow) lpzuteilungadapter.Update(lpdataset.Zuteilung) End Function Public Function SchuelerBeruf_Zugeteilt(ByVal Schuelerberufnr As Integer) As Boolean Dim sqlcmd As New SQLiteCommand sqlcmd.Connection = SQLconnect sqlcmd.CommandType = CommandType.Text sqlcmd.CommandText = "SELECT count(*) from zuteilung where aktiv=1 and schuelerberufnr=" + Schuelerberufnr.ToString SQLconnect.Open() Dim result As Integer = 0 Dim SQLreader As SQLiteDataReader = sqlcmd.ExecuteReader() While SQLreader.Read() Try result = SQLreader(0).ToString Catch ex As Exception result = 0 End Try End While sqlcmd.Dispose() SQLconnect.Close() If result > 0 Then Return True Else Return False End Function End Class