Hello there,
I am getting error when updating photos.
I am getting error when updating photos.
B4X:
#Region Activity Attributes
#FullScreen: True
#IncludeTitle: False
#End Region
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Private edtFirstName As EditText
Private edtLastName As EditText
'Private spnCinsiyet As Spinner
Private edtBirthDay As EditText
Private edtBirthCity As EditText
Private edtLocation As EditText
Private edtFatherName As EditText
Private edtEngel As EditText
Private edtKimlik As EditText
Private btnFirst As Button
Private btnPrevious As Button
Private btnNext As Button
Private btnLast As Button
Private btnAdd As Button
Private btnUpdate As Button
Private btnDelete As Button
Private edtCinsiyet As EditText
Private IbDelete As Label
Private IbUpdate As Label
Private spinnerMap As Map
Private IbAdd As Label
'FOTOĞRAF
Dim Panel1 As Panel
Dim camera1 As Camera
Dim btnTakePicture As Button
Private btnAra As Button
Dim chooser As ContentChooser
Private ImageView1 As ImageView
Public flag As String
Public Buffer() As Byte
Private spnCinsiyet As Spinner
Private edtGrup_1 As EditText
Private edtGrup_2 As EditText
Private edtGrup_3 As EditText
End Sub
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
'Activity.LoadLayout("Layout1")
Activity.LoadLayout("DenekEkle")
End Sub
Sub Activity_Resume
If Starter.CurrentIndex > -1 Then
ShowEntry(Starter.CurrentIndex) 'show the first entry
End If
camera1.Initialize(Panel1, "Camera1")
End Sub
Sub Activity_Pause (UserClosed As Boolean)
camera1.Release
End Sub
Sub Camera1_Ready (Success As Boolean)
If Success Then
camera1.StartPreview
btnTakePicture.Enabled = True
Else
ToastMessageShow("Cannot open camera.", True)
End If
End Sub
Sub Camera1_PictureTaken (Data() As Byte)
Dim Query As String
Dim Cursor1 As Cursor
Dim ID As Int
If Starter.EditMode="Add" Then
ID = Starter.SQL1.ExecQuerySingleResult("SELECT max(ID) FROM Denek")
ID=ID+1
End If
If Starter.EditMode="Edit" Then
ID = Starter.IDList.Get(Starter.CurrentIndex)
End If
Dim filename As String = ID&".jpg"
Dim dir As String = File.DirRootExternal
camera1.StartPreview
Dim out As OutputStream
out = File.OpenOutput(dir,filename, False)
out.WriteBytes(Data, 0, Data.Length)
out.Close
Dim i As Intent
i.Initialize("android.intent.action.MEDIA_SCANNER_SCAN_FILE", _
"file://" & File.Combine(dir,filename))
Dim p As Phone
p.SendBroadcastIntent(i)
End Sub
Sub btnTakePicture_Click
btnTakePicture.Enabled = False
camera1.TakePicture
End Sub
Sub btnAra_Click
'camEx.Release
chooser.Initialize("Chooser")
chooser.Show("image/*", "Choose image")
End Sub
Sub Chooser_Result (Success As Boolean, Dir As String, FileName As String)
' Dim Query As String
If Success Then
'display the chosen image in ImageView
Dim bmp As Bitmap
bmp.Initialize(Dir, FileName)
ImageView1.Bitmap = bmp
'Ask user if they want to save the image to DB ..
'convert the image file to a bytes array
'flagSaveImage = True
Dim ADD As String
Dim UP As String
flag=ADD
flag=UP
Dim InputStream1 As InputStream
InputStream1 = File.OpenInput(Dir, FileName)
Dim OutputStream1 As OutputStream
OutputStream1.InitializeToBytesArray(1000)
File.Copy2(InputStream1, OutputStream1)
' Dim Buffer() As Byte 'declares an empty array
Buffer = OutputStream1.ToBytesArray
End If
End Sub
Sub ShowEntry(EntryIndex As Int)
Private Cursor1 As Cursor
Private ID As Int
spinnerMap.Initialize
If Starter.IDList.Size = 0 Then 'check if database is empty
Return 'if the database is empty leave the routine
End If
If Starter.EditMode = "Add" Then
edtFirstName.Text = ""
edtLastName.Text = ""
edtBirthDay.Text = ""
edtBirthCity.Text = ""
edtLocation.Text = ""
edtEngel.Text= ""
edtKimlik.Text = ""
spnCinsiyet.Prompt = "Cinsiyet" '"Select One Option"
'spinnerMap.Put("", "")
spnCinsiyet.ADD("Bay")
spinnerMap.Put("Bay", "id 2")
spnCinsiyet.ADD("Bayan")
spinnerMap.Put("Bayan", "id 3")
edtFatherName.Text = ""
edtGrup_1.Text = ""
edtGrup_2.Text = ""
edtGrup_3.Text = ""
Else
ID = Starter.IDList.Get(EntryIndex) 'get the ID for the given entry index
'read the entry with the given ID
Cursor1 = Starter.SQL1.ExecQuery("SELECT * FROM Denek WHERE ID = " & ID)
Cursor1.Position = 0 'set the cursor
edtFirstName.Text = Cursor1.GetString("Isim") 'read the value of the FirstName column
edtLastName.Text = Cursor1.GetString("Soyisim") 'read the value of the LasstName column
edtBirthDay.Text = Cursor1.GetString("DogumTarihi") 'read the value of the City column
edtBirthCity.Text = Cursor1.GetString("DogumYeri")
edtLocation.Text = Cursor1.GetString("YasadiğiSehir")
edtEngel.Text= Cursor1.GetString("EndelDurumu")
edtKimlik.Text = Cursor1.GetString("TcNo")
spnCinsiyet.Prompt = "Cinsiyet"
spnCinsiyet.ADD(Cursor1.GetString("Cinsiyet"))
If Cursor1.GetString("Cinsiyet")= ("Bay") Then
spnCinsiyet.ADD("Bayan")
spinnerMap.Put("Bayan", "id 3")
Else
spnCinsiyet.ADD("Bay")
spinnerMap.Put("Bay", "id 2")
End If
Dim IpSt As InputStream
Dim Bitmap1 As Bitmap
Buffer = Cursor1.GetBlob("Resim")
IpSt.InitializeFromBytesArray(Buffer, 0, Buffer.Length)
Bitmap1.Initialize2(IpSt)
IpSt.Close
ImageView1.SetBackgroundImage(Bitmap1)
Try
Catch
Log(LastException)
Msgbox ("Resim Mevcut Değil!","Dikkat")
End Try
edtFatherName.Text = Cursor1.GetString("BabaAdi")
edtGrup_1.Text = Cursor1.GetString("Group1")
edtGrup_2.Text = Cursor1.GetString("Group2")
edtGrup_3.Text = Cursor1.GetString("Group3")
Cursor1.Close 'close the cursor, we don't it anymore
End If
ShowButtons
End Sub
Sub AddEntry
Dim Query As String
Dim Cursor1 As Cursor
' Dim Cursor2 As Cursor
Dim ID As Int
'first we check if the entry already does exist DİKKAT => BİRÇOK kez AND koymayı unuttum aralarına
Query = "SELECT * FROM Denek WHERE Isim = ? AND Soyisim = ? AND DogumTarihi = ? AND DogumYeri = ? AND YasadiğiSehir = ? AND EndelDurumu = ? AND TcNo = ? AND Cinsiyet = ? AND Resim = ? AND BabaAdi = ? AND Group1=? AND Group2 = ? AND Group3 = ?"
Cursor1 = Starter.SQL1.ExecQuery2(Query, Array As String (edtFirstName.Text, edtLastName.Text, edtBirthDay.Text, edtBirthCity.Text, edtLocation.Text, edtEngel.Text, edtKimlik.Text, spnCinsiyet.SelectedItem,edtFatherName.Text, edtGrup_1.Text,edtGrup_2.Text,edtGrup_3.Text ))
If Cursor1.RowCount > 0 Then
'if it exists show a message and do nothing else
ToastMessageShow("This entry already exists", False)
Else
'if not, add the entry
'a NULL for the ID column increments the primary key automatically by one
'we use ExecNonQuery2 because it's easier, we don't need to take care of the data types
Query = "INSERT INTO Denek VALUES (NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?)"
Starter.SQL1.ExecNonQuery2(Query, Array As Object(edtFirstName.Text, edtLastName.Text, edtBirthDay.Text, edtBirthCity.Text, edtLocation.Text, edtEngel.Text, edtKimlik.Text, spnCinsiyet.SelectedItem,Buffer,edtFatherName.Text, edtGrup_1.Text,edtGrup_2.Text,edtGrup_3.Text ))
'Activity2.SQL1.ExecNonQuery2(Query, Array As Object(Buffer))
'to display the ID of the last entry we read the max value of the ID column
ID = Starter.SQL1.ExecQuerySingleResult("SELECT max(ID) FROM Denek")
Starter.RowNumber = Starter.RowNumber + 1 'increase the row count
Starter.IDList.ADD(ID) 'add the last ID to the list
Starter.CurrentIndex = Starter.IDList.Size - 1 'set the current index to the last one
' Activity2.SQL1.ExecNonQuery2("INSERT INTO persons VALUES( NULL, NULL,NULL, NULL,NULL, NULL, NULL, 'Resim')", Array As Object(Buffer))
' Buffer = Null ' not tested ... blank buffer contents and reset image flag
' flagSaveImage = False
End If
Cursor1.Close
ShowButtons
End Sub
Sub DeleteEntry
Private Query As String
Private Answ As Int
'ask the user for confirmation
Answ = Msgbox2("Do you really want to delete " & edtFirstName.Text & " " & edtLastName.Text, "Delete entry", "Yes", "", "No", Null)
If Answ = DialogResponse.POSITIVE Then 'if yes, delete the entry
Query = "DELETE FROM Denek WHERE ID = " & Starter.IDList.Get(Starter.CurrentIndex)
Starter.SQL1.ExecNonQuery(Query) 'delete the entry
Starter.IDList.RemoveAt(Starter.CurrentIndex) 'remove the ID from the list
If Starter.CurrentIndex = Starter.RowNumber - 1 Then 'if the current index is the last one
Starter.CurrentIndex = Starter.CurrentIndex - 1 'decrement it by 1
End If
Starter.RowNumber = Starter.RowNumber - 1 'decrement the row count by 1
ShowEntry(Starter.CurrentIndex) 'show the next entry
ToastMessageShow("Entry deleted", False) 'confirmation for the user
ShowButtons
End If
End Sub
Sub UpdateEntry
Private Query As String
Query = "UPDATE Denek Set Isim = ?, Soyisim = ?, DogumTarihi = ?, DogumYeri = ?, YasadiğiSehir = ?, EndelDurumu = ?, TcNo = ?, Cinsiyet = ?,Resim = ?, BabaAdi = ?, Group1 = ?, Group2 = ?, Group3 = ? WHERE ID = " & Starter.IDList.Get(Starter.CurrentIndex)
Starter.SQL1.ExecNonQuery2(Query, Array As Object(edtFirstName.Text, edtLastName.Text, edtBirthDay.Text , edtBirthCity.Text, edtLocation.Text, edtEngel.Text, edtKimlik.Text, spnCinsiyet.SelectedItem, Buffer, edtFatherName.Text,edtGrup_1.Text, edtGrup_2.Text,edtGrup_3.Text))
'Starter.SQL1.ExecNonQuery2(Query, Array As Object(edtFirstName.Text, edtLastName.Text, spnCinsiyet.SelectedItem, edtBirthDay.Text, edtBirthCity.Text, edtFatherName.Text,Buffer,edtEngel.text))
'Else
ToastMessageShow("Entry updated", False)
End Sub
Sub ShowButtons
If Starter.EditMode = "Edit" Then
btnPrevious.Visible = False 'hide the navigation buttons
btnNext.Visible = False
btnFirst.Visible = False
btnLast.Visible = False
btnAdd.Visible = False
IbAdd.Visible = False
Else
IbUpdate.Visible = False
btnUpdate.Visible = False
btnDelete.Visible = False
IbDelete.Visible = False
If Starter.RowNumber <= 1 Then 'check if the database has less than 2 empty
btnPrevious.Visible = False 'hide the navigation buttons
btnNext.Visible = False
btnFirst.Visible = False
btnLast.Visible = False
Else
'show or hide the Previous and Next buttons depending on the value of the current index
If Starter.CurrentIndex = 0 Then
btnPrevious.Visible = False
btnFirst.Visible = False
Else
btnPrevious.Visible = True
btnFirst.Visible = True
End If
If Starter.CurrentIndex = Starter.IDList.Size - 1 Then
btnNext.Visible = False
btnLast.Visible = False
Else
btnNext.Visible = True
btnLast.Visible = True
End If
End If
End If
End Sub
Sub btnDelete_Click
DeleteEntry
End Sub
Sub btnAdd_Click
AddEntry
Starter.EditMode = "Edit"
ShowButtons
End Sub
Sub btnUpdate_Click
UpdateEntry
End Sub
Sub btnPrevious_Click
If Starter.CurrentIndex > 0 Then
Starter.CurrentIndex = Starter.CurrentIndex - 1
ShowEntry(Starter.CurrentIndex)
End If
End Sub
Sub btnNext_Click
If Starter.CurrentIndex < Starter.RowNumber - 1 Then
Starter.CurrentIndex = Starter.CurrentIndex + 1
ShowEntry(Starter.CurrentIndex)
End If
End Sub
Sub btnFirst_Click
Starter.CurrentIndex = 0
ShowEntry(Starter.CurrentIndex)
End Sub
Sub btnLast_Click
Starter.CurrentIndex = Starter.IDList.Size - 1
ShowEntry(Starter.CurrentIndex)
End Sub
'*************************************
Sub edtFirstName_FocusChanged (HasFocus As Boolean)
If HasFocus = True Then
DoEvents
edtFirstName.SelectAll
DoEvents
edtFirstName.SelectAll
End If
End Sub
Sub edtLastName_FocusChanged (HasFocus As Boolean)
If HasFocus = True Then
DoEvents
edtLastName.SelectAll
DoEvents
edtLastName.SelectAll
End If
End Sub
Sub edtKimlik_FocusChanged (HasFocus As Boolean)
If HasFocus = True Then
DoEvents
edtKimlik.SelectAll
DoEvents
edtKimlik.SelectAll
End If
End Sub
Sub edtCinsiyet_FocusChanged (HasFocus As Boolean)
If HasFocus = True Then
DoEvents
edtCinsiyet.SelectAll
DoEvents
edtCinsiyet.SelectAll
End If
End Sub