Problema con _SQLite_Open

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
avechuche
Hacker del Foro
Mensajes: 188
Registrado: 13 Ago 2009, 09:53

Problema con _SQLite_Open

Mensaje por avechuche »

Bueno tengo un problema con esta funcion.

sDirectorioDB es una variable global, resulta que si le paso una ruta correcta o incorrecta, el @error siempre es 0 y no se porque! Alguna idea?

Código: Seleccionar todo

Func _insertSQL($sNombreColumnasBD, $sDatos, $NombreTabla = "Empleados")

	; Abro la BD
	Local $sSQL = _SQLite_Open($sDirectorioDB)

	If Not @error Then

		_SQLite_Exec($sSQL, "INSERT INTO " & $NombreTabla & "(" & $sNombreColumnasBD & ") VALUES (" & $sDatos & ");")

		; Cierro la BD
		_SQLite_Close($sSQL)

		Return True

	EndIf

	Return False

EndFunc   ;==>_insertSQL
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Problema con _SQLite_Open

Mensaje por Dany »

Verifica el valor de @error en consola o un msgbox

saludos
  • ............................................Imagen
    ......................................Imagen
avechuche
Hacker del Foro
Mensajes: 188
Registrado: 13 Ago 2009, 09:53

Re: Problema con _SQLite_Open

Mensaje por avechuche »

Siempre me devuelve 0, no se porque. Le pase o no un directorio válido, siempre 0
Avatar de Usuario
juantxo
Hacker del Foro
Mensajes: 78
Registrado: 02 Abr 2008, 13:36

Re: Problema con _SQLite_Open

Mensaje por juantxo »

Se me ocurre que puedes comprobar el resultado de la funcion _SQLite_Open, ya que segun el codigo de SQLite.au3 si hay un error devuelve 0.

Asi en vez de

Código: Seleccionar todo

If Not @error Then
Prueba con

Código: Seleccionar todo

If $sSql Then 
Pero como bien dices, es muy extraño.¿has comprobado la libreria, por si no es correcta?

Este el es codigo de la que yo tengo (solo la funcion OPEN).

Código: Seleccionar todo

; #FUNCTION# ====================================================================================================================
; Author ........: piccaso (Fida Florian)
; Modified.......: jchd, jpm
; ===============================================================================================================================
Func _SQLite_Open($sDatabase_Filename = Default, $iAccessMode = Default, $iEncoding = Default)
	If Not $g_hDll_SQLite Then Return SetError(3, $SQLITE_MISUSE, 0)
	If $sDatabase_Filename = Default Or Not IsString($sDatabase_Filename) Then $sDatabase_Filename = ":memory:"
	Local $tFilename = __SQLite_StringToUtf8Struct($sDatabase_Filename)
	If @error Then Return SetError(2, @error, 0)
	If $iAccessMode = Default Then $iAccessMode = BitOR($SQLITE_OPEN_READWRITE, $SQLITE_OPEN_CREATE)
	Local $OldBase = FileExists($sDatabase_Filename) ; encoding cannot be changed if base already exists
	If $iEncoding = Default Then
		$iEncoding = $SQLITE_ENCODING_UTF8
	EndIf
	Local $avRval = DllCall($g_hDll_SQLite, "int:cdecl", "sqlite3_open_v2", "struct*", $tFilename, _ ; UTF-8 Database filename
			"ptr*", 0, _ ; OUT: SQLite db handle
			"int", $iAccessMode, _ ; database access mode
			"ptr", 0)
	If @error Then Return SetError(1, @error, 0) ; DllCall error
	If $avRval[0] <> $SQLITE_OK Then
		__SQLite_ReportError($avRval[2], "_SQLite_Open")
		_SQLite_Close($avRval[2])
		Return SetError(-1, $avRval[0], 0)
	EndIf

	$g_hDB_SQLite = $avRval[2]
	__SQLite_hAdd($__ghDBs_SQLite, $avRval[2])
	If Not $OldBase Then
		Local $encoding[3] = ["8", "16", "16be"]
		_SQLite_Exec($avRval[2], 'PRAGMA encoding="UTF-' & $encoding[$iEncoding] & '";')
	EndIf
	Return SetExtended($avRval[0], $avRval[2])
EndFunc   ;==>_SQLite_Open
A ver si descubres el fallo!! :smt026
Responder