Private Sub darb_id_NotInList(NewData As String, Response As Integer)
On Error GoTo KLAIDA
Response = acDataErrContinue 'Panaikina standartine klaida
Beep
Dim eilute As String
eilute = NewData
eilute = NaikintiDuTarpus(eilute)
If TarpaiGale(eilute) = True Or TarpaiPradzioje(eilute) = True Then
If TarpaiGale(eilute) = True Then
eilute = Left$(eilute, Len(eilute) - 1)
End If
If TarpaiPradzioje(eilute) = True Then
eilute = NaikintiTarpusPradzioje(eilute)
End If
darb_id.Text = eilute
Exit Sub
End If
Dim indeksas As Single
For i = 1 To Len(eilute)
If Mid$(eilute, i, 1) = "," Then
indeksas = indeksas + 1
End If
Next
If indeksas = 2 Then 'Maksimalus indeksas(indeksas 0,1,2)
Dim reiksme() As String
reiksme = Split(eilute, ",")
reiksme(2) = NaikintiVisusTarpus(reiksme(2))
reiksme(0) = NaikintiTarpusPradzioje(reiksme(0))
reiksme(1) = NaikintiTarpusPradzioje(reiksme(1))
reiksme(0) = NaikintiDuTarpus(reiksme(0))
reiksme(1) = NaikintiDuTarpus(reiksme(1))
Do While TarpaiGale(reiksme(0)) = True
reiksme(0) = Left$(reiksme(0), Len(reiksme(0)) - 1)
Loop
Do While TarpaiGale(reiksme(1)) = True
reiksme(1) = Left$(reiksme(1), Len(reiksme(1)) - 1)
Loop
If RaideTarpas(reiksme(0)) = False Or RaideTarpas(reiksme(1)) = False Or Skaicius(reiksme(2), 1) = False Then
MsgBox "Blogai ivesti nauju darbuotojo pareigu duomenys! Duomenys turi susidaryti iš skaiciu, raidžiu ir tarpu. Skaicius galima rašyti tik algai, o raides tik pareigoms ir padaliniui." & vbCrLf & "Pavyzdys: Vyresnysis Sandelininkas, Viršuniškiu Sandelys, 3000", vbOKOnly, "KLAIDA!"
Else
reiksme(0) = DidziosiosPoTarpu(reiksme(0))
reiksme(1) = DidziosiosPoTarpu(reiksme(1))
Mid$(reiksme(0), 1, 1) = UCase$(Mid$(reiksme(0), 1, 1))
Mid$(reiksme(1), 1, 1) = UCase$(Mid$(reiksme(1), 1, 1))
Do While Mid$(reiksme(2), 1, 1) = "0" And Len(reiksme(2)) > 1
For i = 1 To Len(reiksme(2)) - 1
Mid$(reiksme(2), i, 1) = Mid$(reiksme(2), i + 1, 1)
Next
reiksme(2) = Left$(reiksme(2), Len(reiksme(2)) - 1)
Loop
If reiksme(2) = "0" Then
MsgBox "Draudžiama darbuotojui ivesti nuline alga!", vbOKOnly, "Demesio!"
Exit Sub
ElseIf Len(reiksme(0)) < 3 Then
MsgBox "Darbuotojo pareigos turi susidaryti bent iš triju simboliu!", vbOKOnly, "Demesio!"
Exit Sub
ElseIf Len(reiksme(0)) > 50 Then
MsgBox "Darbuotojo pareigos turi susidaryti ne iš daugiau, nei 50 simboliu!", vbOKOnly, "Demesio!"
Exit Sub
ElseIf Len(reiksme(1)) < 3 Then
MsgBox "Padalinys, kuriame darbuotojas dirbs turi susidaryti bent iš 3 simboliu!", vbOKOnly, "Demesio!"
Exit Sub
ElseIf Len(reiksme(1)) > 50 Then
MsgBox "Padalinys, kuriame darbuotojas dirbs turi susidaryti ne iš daugiau, nei 50 simboliu!", vbOKOnly, "Demesio!"
Exit Sub
End If
If MsgBox("Norite prideti darbuotojo informacija, kuri susidaro iš:" & vbCrLf & "Darbuotojo pareigu: ''" & reiksme(0) & "''" & vbCrLf & "Darbovietes: ''" & reiksme(1) & "''" & vbCrLf & "Algos: " & reiksme(2), vbOKCancel, "Irašymo patvirtinimas") = vbOK Then
Dim db As Database
Set db = CurrentDb()
Dim Lentele As Recordset
Dim SQL As String
SQL = "Select * FROM PAREIGOS"
Set Lentele = db.OpenRecordset(SQL, dbOpenDynaset)
Lentele.AddNew
Lentele![pav] = reiksme(0)
Lentele.Update
Dim pareigos As Single
Lentele.Bookmark = Lentele.LastModified
pareigos = Lentele![ID]
Dim dublis As Single
If pareigos = 0 Then
dublis = 1
Lentele.MoveFirst
Do While Lentele![pav] <> reiksme(0)
Lentele.MoveNext
Loop
pareigos = Lentele![ID]
End If
Lentele.Close
SQL = "Select * FROM PADALINIAI"
Set Lentele = db.OpenRecordset(SQL, dbOpenDynaset)
Lentele.AddNew
Lentele![pav] = reiksme(1)
Lentele.Update
Dim padaliniai As Single
Lentele.Bookmark = Lentele.LastModified
padaliniai = Lentele![ID]
If padaliniai = 0 Then
dublis = dublis + 1
Lentele.MoveFirst
Do While Lentele![pav] <> reiksme(1)
Lentele.MoveNext
Loop
padaliniai = Lentele![ID]
End If
Lentele.Close
SQL = "SELECT * FROM [DARBUOTOJU INFORMACIJA]"
Set Lentele = db.OpenRecordset(SQL, dbOpenDynaset)
If dublis = 2 Then
Do While Not Lentele.EOF
If Lentele!alg = reiksme(2) And Lentele!pad_id = padaliniai And Lentele!par_id = pareigos Then
MsgBox "Identiškas irašas jau egzistuoja! Šis irašas nebus irašytas.", vbCritical, "Demesio!"
Me.Undo
Exit Sub
End If
Lentele.MoveNext
Loop
End If
Lentele.AddNew
Lentele![alg] = reiksme(2)
Lentele![par_id] = pareigos
Lentele![pad_id] = padaliniai
Lentele.Update
Lentele.Bookmark = Lentele.LastModified
Lentele.Close
Beep
MsgBox "Nauji duomenys išsaugoti.", vbInformation, "Pranešimas"
darb_id.Text = reiksme(0)
NewData = reiksme(0)
Response = acDataErrAdded
Else
Me.Undo
End If
End If
Else
MsgBox "Irašytu darbuotojo pareigu saraše nera! Pasitikrinkite ar rašydami naujas pareigas nepridejote per daug kableliu. Jei norite irašyti naujas darbuotojo pareigas rašykite duomenis atskirdami kablelias." & vbCrLf & "Duomenu sintakse: Pareigu pavadinimas, Padalinio pavadinimas, Alga." & vbCrLf & "Pavyzdys: Vyresnysis Sandelininkas, Viršuniškiu Sandelys, 3000", vbOKOnly, "Demesio!"
End If
'------------------------------------------
KLAIDA:
Select Case Err.Number
Case 0
Case 20
Case 94 'Dirbama su nuline reiksme nors draudziama(veiksmas neivykdytas)
Case 3016 'Irasas netilpo i lentele(nes lenteleje saugoma triju lauku irasai)
Case 3021
Case 3022 'I lentele nebuvo irasyti nauji duomenys, nes dubliavimas draudziamas o duomenys buvo dubliuoti
Case 3709
Case Else
MsgBox "Klaidos kodas yra: " & Err.Number & " . Praneškite apie šia klaida programos kurejui ir ji bus ištaisyta.", vbExclamation + vbOKOnly, "Klaidos pranešimas"
End Select
Resume Next
'------------------------------------------
End Sub