﻿B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=7.01
@EndOfDesignText@
Sub Class_Globals
	
	Dim cntcol,CntIndexCol As Int =0
	Dim VIndexCol(6,3) As String
	Dim Vcol(30,3) As String
	' 0  col nam
	' 1  Valor
	' 2  Tipo columna
	Dim Tabla As String
End Sub

'Initializes the object. You can add parameters to this method if needed.
Public Sub Initialize (Tname As String)	
	Tabla = Tname
	For i=0 To cntcol-1
		Vcol(i,0)=""
		Vcol(i,1)=""
		Vcol(i,2)=""
	Next
	For i=0 To CntIndexCol-1
		VIndexCol(i,0)=""
		VIndexCol(i,1)=""
		VIndexCol(i,2)=""
	Next
	cntcol=0
	CntIndexCol=0
End Sub

Sub ColExist (Colname As String) As Int	
	
	For i=0 To cntcol-1
		If Vcol(i,0)=Colname Then Return i
	Next
	Return -1
End Sub

Sub IndexExist (Colname As String) As Int	
	
	For i=0 To CntIndexCol-1
		If VIndexCol(i,0)=Colname Then Return i 
	Next
	Return -1
End Sub

Sub ClearCol
	For i=0 To cntcol-1
		Vcol(i,0)=""
		Vcol(i,1)=""
		Vcol(i,2)=""
	Next
	cntcol=0
End Sub


Sub ClearIndex
	For i=0 To CntIndexCol-1
		VIndexCol(i,0)=""
		VIndexCol(i,1)=""
		VIndexCol(i,2)=""
	Next
	
	CntIndexCol=0
End Sub

Sub ClearAllcols
	ClearIndex
	ClearCol
End Sub

Sub PrepareData (str As String) As String
	str = str.Replace("'","")
	str = str.Replace(";","")
	Return str
End Sub

Sub AddColEncryptada(Colname As String, val As String)
	Dim IdFila As Int = ColExist(Colname)
	If IdFila >-1 Then
		Vcol(IdFila,1) ="AES_ENCRYPT('" & PrepareData(val) & "','aes_pwkey')"
		Return
	End If
	Vcol(cntcol,0) = Colname
	Vcol(cntcol,1) = "AES_ENCRYPT('" & val & "','aes_pwkey')"
	cntcol =1+cntcol
End Sub
Sub AddColString(Colname As String, val As String)
	Dim IdFila As Int = ColExist(Colname)
	If IdFila >-1 Then
		Vcol(IdFila,1) = "'" &  PrepareData(val) & "'"
		Return
	End If
	Vcol(cntcol,0) = Colname
	Vcol(cntcol,1) = "'" &  PrepareData(val) & "'"
	cntcol =1+cntcol	
End Sub

Sub AddColString_encode(Colname As String, val As String)
	Dim IdFila As Int = ColExist(Colname)
	val = val.Replace("&","__1")
	val = val.Replace("#","__2")
	If IdFila >-1 Then
		Vcol(IdFila,1) = "'" &  PrepareData(val) & "'"
		Return
	End If
	Vcol(cntcol,0) = Colname
	Vcol(cntcol,1) = "'" &  PrepareData(val) & "'"
	cntcol =1+cntcol	
End Sub

Sub AddColIndex(Colname As String, val As String)
	Dim IdFila As Int = IndexExist(Colname)
	If IdFila >-1 Then
		VIndexCol(IdFila,1) = "'" &  PrepareData(val) & "'"
		Return
	End If
	VIndexCol(CntIndexCol,0) = Colname
	VIndexCol(CntIndexCol,1) = "'" &  PrepareData(val) & "'"
	CntIndexCol =CntIndexCol+1
End Sub


Sub GetInsertReplaceQuery As String
	' para sqlite
	Dim Sql As String = "Insert OR REPLACE INTO " & Tabla & " ("
	Dim cols,Values As String
	Values =" ("
	cols = ""
	For i=0 To cntcol-1
		If i < (cntcol-1) Then
			cols = cols & Vcol(i,0) & ","
			Values = Values & Vcol(i,1) & ","
		Else
			cols = cols & Vcol(i,0) & ")"
			Values = Values & Vcol(i,1) & ")"
		End If
	Next
	Sql = Sql & cols & " Values " & Values & ";"
	Return Sql
End Sub


Sub GetInsertUpdateQuery As String
	
	Dim Sql As String = "Insert Into " & Tabla & " ("
	Dim cols,Values As String
	Values =" ("
	cols = ""
	For i=0 To cntcol-1
		If i < (cntcol-1) Then
			cols = cols & Vcol(i,0) & ","
			Values = Values & Vcol(i,1) & ","
		Else
			cols = cols & Vcol(i,0) & ")"
			Values = Values & Vcol(i,1) & ")"
		End If
	Next
	Sql = Sql & cols & " Values " & Values & " ON DUPLICATE KEY UPDATE "
	
	cols = ""
	'--------------------- valores a actualizar
	For i=0 To cntcol-1
		If i < (cntcol-1) Then
			cols = cols & Vcol(i,0) & "=" & Vcol(i,1) &  ","
		Else
			cols = cols & Vcol(i,0) & "=" & Vcol(i,1)
		End If
	Next
	Sql = Sql & cols & " ;"
	Return Sql
End Sub


Sub GetInsertQuery As String
	
	Dim Sql As String = "Insert Into " & Tabla & " (" 
	Dim cols,Values As String
	Values =" ("
	cols = ""
	For i=0 To cntcol-1
		If i < (cntcol-1) Then
				cols = cols & Vcol(i,0) & ","
				Values = Values & Vcol(i,1) & ","
			Else
				cols = cols & Vcol(i,0) & ")"
				Values = Values & Vcol(i,1) & ")"
		End If		
	Next
	Sql = Sql & cols & " Values " & Values & ";"
	Return Sql
End Sub

Sub GetUpdateQuery As String
	
	Dim Sql As String = "Update  " & Tabla & " Set " 
	Dim cols,where As String

	cols = ""
	where = " Where "
	'--------------------- valores a actualizar
	For i=0 To cntcol-1
		If i < (cntcol-1) Then
			cols = cols & Vcol(i,0) & "=" & Vcol(i,1) &  ","				
			Else
			cols = cols & Vcol(i,0) & "=" & Vcol(i,1) 				
		End If		
	Next
	'---------------
	For i=0 To CntIndexCol-1
		If i < (CntIndexCol-1) Then
			where = where & VIndexCol(i,0) & "=" & VIndexCol(i,1) &  " AND "
				
		Else
			where = where & VIndexCol(i,0) & "=" & VIndexCol(i,1) 
		End If
	Next
	Sql = Sql & cols & where &"; "
	Return Sql
End Sub



Sub GetSelectQuery As String
	
	Dim Sql As String = "Select  " 
	Dim cols,where As String

	cols = " "
	where = " Where "
	'--------------------- Columnas a traer
	For i=0 To cntcol-1
		If i < (cntcol-1) Then
			cols = cols & Vcol(i,0) &  ","
				
			Else
			cols = cols & Vcol(i,0) 				
		End If		
	Next
	cols = cols & " "
	'---------------
	For i=0 To CntIndexCol-1
		If i < (CntIndexCol-1) Then
			where = where & VIndexCol(i,0) & "=" & VIndexCol(i,1) &  " AND "				
		Else
			where = where & VIndexCol(i,0) & "=" & VIndexCol(i,1) 
		End If
	Next
	Sql = Sql & cols & " From " & Tabla & where
	Return Sql
End Sub



Sub GetDeleteQuery As String
	
	Dim Sql As String = "Delete From  " & Tabla
	Dim where As String

	where = " Where "
	
	'---------------
	For i=0 To CntIndexCol-1
		If i < (CntIndexCol-1) Then
			where = where & VIndexCol(i,0) & "=" & VIndexCol(i,1) &  " AND "				
		Else
			where = where & VIndexCol(i,0) & "=" & VIndexCol(i,1) 
		End If
	Next
	Sql = Sql & where  & ";"
	Return Sql
End Sub


