Red de conocimientos turísticos - Evaluación hotelera - Usar la base de datos de acceso para realizar un programa de instalación, urgente

Usar la base de datos de acceso para realizar un programa de instalación, urgente

/t/2002 05 22/13/743044 La URL html está aquí.

Será mejor que coloques todos los archivos que necesitas (EXE, DLL, etc.) en la carpeta de instalación de tu propio programa, no en el directorio del sistema. Esto hace que sea más fácil moverlo y también registrarlo. fuente de datos.

Tengo un ejemplo de cómo registrar automáticamente una fuente de datos ODBC, que es la base de datos ACCESS registrada. Aunque no es PB8, es el mismo. Usemos el de PB8 como archivo DLL.

Función pública externa (función externa global)

//Obtener la ruta actual

Función pública Long GetCurrentDirectoryA(Long nBufferLength, ref string lpBuffer) biblioteca "kernel 32 ";

//Obtener la representación del año en el calendario lunar.

Función larga MyFormatLunarYear(iYear largo, texto de cadena de referencia) biblioteca "calendar.dll"

//Obtener la representación del calendario lunar de un día

Función larga MyGetLunarDate(long iYear, long iMonth, long iDay, ref long iLunarYear, ref long iLunarMonth, ref long iLunarDay) biblioteca "calendar.dll"

//Obtiene el número del término solar lunar de un día determinado.

Función de la biblioteca getjieqi larga (iAño largo, iMes largo, iDía largo) "calendar.dll"

1. Plan de día del mar.

/*<. /p>

Run_flag: indica si el sistema se está ejecutando por primera vez, 0 es la primera vez, para que el sistema pueda determinar si debe crear una nueva fuente de datos.

Dsn_def: fuente de datos predeterminada

Week_month: indica si la interfaz de entrada inicial se muestra en semanas o meses, 1 mes, dos semanas

Icon_flag: indica; si el tiempo de ejecución se muestra en una interfaz minimizada. 1-sí 0-no.

Iuser: El ID de usuario del último inicio de sesión.

Idiff: Diferencia del último inicio de sesión (empresa, familia, otro)

*/

[Público]

begin_year=2001

Año final=2005

año_paso=1

mes_paso=1

Curr_path=D:\pb\ día? Pai \pbl

semana_mes=1

[ini]

ini_flag=1

run_flag=1

dsn_def=dsn_sdp

icon_flag=0

iuser=jdh

idiff=1

2. ue_ini() devuelve (ninguno)<. /p>

//Establecer la fuente de datos predeterminada

Si len(trim(profileString(" sea day plan . ini ", " ini ", " dsn_def ", " "))) = 0

setprofileString(" plan del día del mar . ini ", " ini ", " dsn_def ", " dsn_sdp ")

Terminará si...

3. ue_outo_set_odbc() devuelve (ninguno)

/*Establece automáticamente la fuente de datos odbc

En palabras clave relacionadas con odbc:

HKEY _local_machine\software \ODBC\ ¿odbcinst.ini\ODBCDriver registra todos los ODBC instalados? ¿El controlador

HKEY_Local_Machine\Software\ODBC\odbcinst.ini registra varios ODBC? Información sobre el conductor.

HKEY_Current_User\Software\odbc\odbc.ini\ODBC Data Source registra los tipos de varias fuentes de datos.

HKEY _current_user\software\odbc\odbc.ini registra información detallada de varias fuentes de datos*/

String ls_sys[]

ls_sys[1]= " HKEY_LOCAL_MACHINE\Software\ODBC\ODBC inst.INI\ODBC Driver"

ls_sys[2]= "HKEY_LOCAL_MACHINE\Software\ ODBC\ODBC inst.ini "

ls_sys[3]= "HKEY_CurrentUser\ODBC\ODBC.ini\ODBCDataSource"

ls_sys[ 4]= "HKEY_Current User\Software\ODBC\ODBC. INI "

//Determine si Access está instalado en el sistema.

Cadena ls_install

RegistryGet(ls_sys[1], "Controlador de Microsoft Access(*.

mdb)", RegString!, ls_install)

if trim(ls_install)<>"Instalar" entonces

Messagebox("Error", "Microsoft Access no está instalado el controlador")

Detener

Terminará si...

//Obtener la ruta actual

Ruta de mínimos cuadrados de cadena

ls_curr_path = perfil string("plan del día en el mar. ini","public","curr_path","")

Si len(trim(ls_curr_path))= 0, entonces

Cuadro de mensaje ("Error", "¡Error del sistema al inicializar el archivo de ruta actual!")

Detener

Si... terminará

//Obtener el nombre de la fuente de datos predeterminada

Cadena ls_dsn

ls _ DSN = perfil cadena(" sea day plan . ini ", " ini ", " dsn_def ", "")

Si len(trim(ls_dsn))=0, entonces

Messagebox ("Error", "¡El sistema tiene un error en el archivo de inicialización de la fuente de datos!")

Detener

Terminará si...

//Modificar el registro

RegistrySet(ls_sys[3], ls_dsn, RegString!, "Microsoft Access Driver(*.MDB)")//Tipo de fuente de datos de registro.

RegistrySet(ls_sys[4]+"\"+ls_DSN,"DBQ",RegString!,ls_curr _ path+" \ sea _ day_plan.MDB ") // Registre los detalles de la fuente de datos.

conjunto de registros(ls_sys[4]+" \ "+ls_DSN, "Driver", RegString!, "C:\WINDOWS\SYSTEM\odbcjt32.dll")

conjunto de registros (ls_sys[4]+" \ "+ls_DSN,"FIL",RegString!,"MS Access")

RegistrySet(ls_sys[4]+" \ "+ls_DSN,"PWD",RegString! ,"sql")

conjunto de registros(ls_sys[4]+" \ "+ls_DSN,"UID",RegString!," dba")

ulong lu_driverid, lu_SafeTransactions

lu_driverid=25

lu_SafeTransactions=0

conjunto de registros(ls _ sys[4] +" \ "+ls_DSN,"DriveId",Regulong!,lu_driverid)

conjunto de registros(ls_sys[4]+" \"+ls_DSN,"SafeTransactions",Regulong!, lu_SafeTransactions)

4. Concurso abierto

Abierto (. w_ver_promp)

Si perfilstring("sea day plan.ini", "ini", "run_flag", " ")="0 "Entonces

//Obtener la ruta actual

Cadena ls _ruta actual

long ll_length=50

int li_rtn

Cadena ls_dsn="dsn_sdp "

Li _ RTN = getcurrentdirectorya(ll_length, refls_current_path)//Error al introducir el evento ue_ini.

Si li_rtn=0, entonces

Messagebox("Error de acceso", "Error de acceso al directorio de aplicaciones, reinstale")

Detener

Terminará si...

setProfileString(" sea day plan . ini ", " public ", " curr_path ", ls_current_path)

//Inicialización

this.triggerevent("ue_ini ")

//Inicializar el registro

este .trigger event(" UE _ auto _ set _ odbc ")

Terminará si...

//Obtener la fuente de datos predeterminada

ls _ DSN = cadena de perfil(" sea day plan . ini ", " ini ", " dsn_def ", "")

Si len(trim(ls_dsn))=0, entonces

Messagebox ("Error", "¡El sistema tiene un error en el archivo de inicialización de la fuente de datos!" )

Detener

Terminará si...

//Configurar fuente de datos

SQLCA. DBMS = "ODBC "

SQLCA. autocommit=false

SQLCA.

db parm = " connect string = ' DSN = "+ls _ DSN+"; UID = dbaPWD=sql ' "

Utilice sqlca para conectarse;

Si SQLCA. SQLCode & lt& gt Then 0

MessageBox("Error en la conexión de la base de datos", "No se puede conectar a la base de datos, posible motivo" + SQLCA. SQLErrText)

Regresar

Terminará si...

Cerrar (w_ver_promp)

Abrir (w_main)

Abrir (w_promp)

/ /Borrar la base de datos

Si es válido (w_promp), entonces

w _ promp . dw _ 1 objeto t _ 1 . "

Terminará si...

w_main.triggerevent("ue_new ")

setProfileString(" plan del día del mar . ini ", " ini " , " run_flag " , " 1 ")

Cerrar (con mensaje)

Abrir (w_test)

*********** ***** ****

//Ventana centrada automáticamente

Environment_Environment

int li_ReturnCode

Esto. SetRedraw(False) //¿Obtienes la resolución de pantalla?

Li _ return code = get Environment(le _ envir)//Mueve la ventana al centro de la pantalla.

si li _ ReturnCode & lt& gt1 entonces // falla

Esto. SetRedraw(true)

Return

Terminará si...

Li _ código de retorno = this move((PixelsToUnits(le _ envir. screen). ancho, ( SetRedraw(true)

Soy demasiado vago para componer. Míralo.