Private
Declare
Functionlstrcpyn Lib <var>"kernel32"</var> Alias <var>"lstrcpynA"</var> (ByVal lpString1 As
String, ByVal lpString2 As
String, ByVal iMaxLength As Long) As Long
Private
Declare
Functionlstrcmp Lib <var>"kernel32"</var> Alias <var>"lstrcmpA"</var> (ByVal lpString1 As
String, ByVal lpString2 As
String) As Long
Private
Declare
Functionlstrlen Lib <var>"kernel32"</var> Alias <var>"lstrlenA"</var> (ByVal lpString As Long) As Long
Private
Declare
Functionlstrcpy Lib <var>"kernel32"</var> Alias <var>"lstrcpyA"</var> (ByVal lpString1 As Any, ByVal lpString2 As Any) As Long
Private
Declare
SubCopyMemory Lib <var>"kernel32"</var> Alias <var>"RtlMoveMemory"</var> (Destination As Any, Source As Any, ByVal Length As Long)
Private
ConstPROTOCOL_VERSION = 10
Private
ConstMYSQL_SERVER_VERSION = <var>"4.1.17"</var>
Private
ConstMYSQL_SERVER_SUFFIX = <var>""</var>
Private
ConstFRM_VER = 6
Private
ConstMYSQL_VERSION_ID = 32349
Private
ConstMYSQL_PORT = 3306
Private
ConstMYSQL_UNIX_ADDR = <var>"/tmp/mysql.sock"</var>
Private
ConstNAME_LEN = 64 <samp>'Field/table name length</samp>
Private
ConstHOSTNAME_LENGTH = 60
Private
ConstUSERNAME_LENGTH = 16
Private
ConstSERVER_VERSION_LENGTH = 60
Private
ConstLOCAL_HOST = <var>"localhost"</var>
Private
ConstLOCAL_HOST_NAMEDPIPE = <var>"."</var>
Private
ConstMYSQL_NAMEDPIPE = <var>"MySQL"</var>
Private
ConstMYSQL_SERVICENAME = <var>"MySql"</var>
Private
ConstNOT_NULL_FLAG = 1 <samp>' Field can't be NULL</samp>
Private
ConstPRI_KEY_FLAG = 2 <samp>' Field is part of a primary key</samp>
Private
ConstUNIQUE_KEY_FLAG = 4 <samp>' Field is part of a unique key</samp>
Private
ConstMULTIPLE_KEY_FLAG = 8 <samp>' Field is part of a key</samp>
Private
ConstBLOB_FLAG = 16 <samp>' Field is a blob</samp>
Private
ConstUNSIGNED_FLAG = 32 <samp>' Field is unsigned</samp>
Private
ConstZEROFILL_FLAG = 64 <samp>' Field is zerofill</samp>
Private
ConstBINARY_FLAG = 128
Private
ConstENUM_FLAG = 256 <samp>' field is an enum</samp>
Private
ConstAUTO_INCREMENT_FLAG = 512 <samp>' Field is a autoincrement field</samp>
Private
ConstTIMESTAMP_FLAG = 1024 <samp>' Field is a timestamp</samp>
Private
ConstSET_FLAG = 2048 <samp>' Field is a set</samp>
Private
ConstNUM_FLAG = 32768 <samp>' Field is num (for clients)</samp>
Private
ConstPART_KEY_FLAG = 16384 <samp>' Intern: Part of some key</samp>
Private
ConstGROUP_FLAG = 32768 <samp>' Intern: Group field</samp>
Private
ConstUNIQUE_FLAG = 65536 <samp>' Intern: Used by sql_yacc</samp>
Private
ConstREFRESH_GRANT = 1 <samp>' Refresh grant tables</samp>
Private
ConstREFRESH_LOG = 2 <samp>' Start on new log file</samp>
Private
ConstREFRESH_TABLES = 4 <samp>' close all tables</samp>
Private
ConstREFRESH_HOSTS = 8 <samp>' Flush host cache</samp>
Private
ConstREFRESH_STATUS = 16 <samp>' Flush status variables</samp>
Private
ConstREFRESH_THREADS = 32 <samp>' Flush status variables</samp>
Private
ConstREFRESH_SLAVE = 64 <samp>' Reset master info and restart slave thread</samp>
Private
ConstREFRESH_MASTER = 128 <samp>' Remove all bin logs in the index and truncate the index</samp>
Private
ConstREFRESH_READ_LOCK = 16384 <samp>' Lock tables for read</samp>
Private
ConstREFRESH_FAST = 32768 <samp>' Intern flag</samp>
Private
ConstCLIENT_LONG_PASSWORD = 1 <samp>' new more secure passwords</samp>
Private
ConstCLIENT_FOUND_ROWS = 2 <samp>' Found instead of affected rows</samp>
Private
ConstCLIENT_LONG_FLAG = 4 <samp>' Get all column flags</samp>
Private
ConstCLIENT_CONNECT_WITH_DB = 8 <samp>' One can specify db on connect</samp>
Private
ConstCLIENT_NO_SCHEMA = 16 <samp>' Don't allow database.table.column</samp>
Private
ConstCLIENT_COMPRESS = 32 <samp>' Can use compression protocol</samp>
Private
ConstCLIENT_ODBC = 64 <samp>' Odbc client</samp>
Private
ConstCLIENT_LOCAL_FILES = 128 <samp>' Can use LOAD DATA LOCAL</samp>
Private
ConstCLIENT_IGNORE_SPACE = 256 <samp>' Ignore spaces before '('</samp>
Private
ConstCLIENT_CHANGE_USER = 512 <samp>' Support the mysql_change_user()</samp>
Private
ConstCLIENT_INTERACTIVE = 1024 <samp>' This is an interactive client</samp>
Private
ConstCLIENT_SSL = 2048 <samp>' Switch to SSL after handshake</samp>
Private
ConstCLIENT_IGNORE_SIGPIPE = 4096 <samp>' IGNORE sigpipes</samp>
Private
ConstCLIENT_TRANSACTIONS = 8192 <samp>' Client knows about transactions</samp>
Private
ConstSERVER_STATUS_IN_TRANS = 1 <samp>' Transaction has started</samp>
Private
ConstSERVER_STATUS_AUTOCOMMIT = 2 <samp>' Server in auto_commit mode</samp>
Private
ConstMYSQL_ERRMSG_SIZE = 200
Private
ConstNET_READ_TIMEOUT = 30 <samp>' Timeout on read</samp>
Private
ConstNET_WRITE_TIMEOUT = 60 <samp>' Timeout on write</samp>
Private
ConstNET_WAIT_TIMEOUT = 8 * 60 * 60 <samp>' Wait for new query</samp>
Private
Enumenum_server_command
End
Enum
Private
TypeChamps
String
typeAs enum_field_types
String
End
Type
Private
TypeNET
String* MYSQL_ERRMSG_SIZE
errorAs Integer
End
Type
Private
Constpacket_error As Long = -1
Private
Enumenum_field_types
End
Enum
Private
ConstFIELD_TYPE_CHAR = FIELD_TYPE_TINY
Private
ConstFIELD_TYPE_INTERVAL = FIELD_TYPE_ENUM
Private
TypeUSED_MEM
nextAs Long <samp>'pointer to a USED_MEM structure</samp>
leftAs Long <samp>'memory left in block</samp>
sizeAs Long <samp>'size of block</samp>
End
Type
Private
TypeMEM_ROOT
End
Type
Private
TypeMYSQL_FIELD
nameAs Long
typeAs enum_field_types
End
Type
Private
TypeMYSQL_ROWS
nextAs Long <samp>'pointer to a MYSQL_ROWS structure</samp>
End
Type
Private
TypeMYSQL_DATA
End
Type
Private
Typemysql_options
End
Type
Private
Enummysql_option
End
Enum
Private
Enummysql_status
End
Enum
Private
TypemySQL
String* 9
End
Type
Private
TypeMYSQL_RES
eofAs Boolean <samp>'Used my mysql_fetch_row</samp>
End
Type
Private
Declare
Functionmysql_num_rows Lib <var>"libmysql.dll"</var> (ByVal res As Long) As Long
Private
Declare
Functionmysql_num_fields Lib <var>"libmysql.dll"</var> (ByVal res As Long) As Long
Private
Declare
Functionmysql_eof Lib <var>"libmysql.dll"</var> (ByVal res As Long) As Boolean
Private
Declare
Functionmysql_fetch_field_direct Lib <var>"libmysql.dll"</var> (ByVal res As Long, ByVal fieldnr As Long) As Long
Private
Declare
Functionmysql_fetch_fields Lib <var>"libmysql.dll"</var> (ByVal res As Long) As Long
Private
Declare
Functionmysql_row_tell Lib <var>"libmysql.dll"</var> (ByVal res As Long) As Long
Private
Declare
Functionmysql_field_tell Lib <var>"libmysql.dll"</var> (ByVal res As Long) As Long
Private
Declare
Functionmysql_field_count Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Long
Private
Declare
Functionmysql_affected_rows Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Long
Private
Declare
Functionmysql_insert_id Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Long
Private
Declare
Functionmysql_errno Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Long
Private
Declare
Functionmysql_error Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Long
Private
Declare
Functionmysql_info Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Long
Private
Declare
Functionmysql_thread_id Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Long
Private
Declare
Functionmysql_character_set_name Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Long
Private
Declare
Functionmysql_init Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Long
Private
Declare
Functionmysql_change_user Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long, _
String, _
String, ByVal db As
String) As Boolean
Private
Declare
Functionmysql_connect Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long, ByVal host As
String, _
String, ByVal passwd As
String) As Long
Private
Declare
Functionmysql_real_connect Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long, ByVal host As
String, _
String, ByVal passwd As
String, ByVal db As
String, _
String, ByVal clientflag As Integer) As Long
Private
Declare
Submysql_close Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long)
Private
Declare
Functionmysql_select_db Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long, ByVal db As
String) As Integer
Private
Declare
Functionmysql_query Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long, ByVal q As
String) As Integer
Private
Declare
Functionmysql_send_query Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long, ByVal q As
String, _
Private
Declare
Functionmysql_read_query_result Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Integer
Private
Declare
Functionmysql_real_query Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long, ByVal q As
String, _
Private
Declare
Functionmysql_create_db Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long, ByVal db As
String) As Integer
Private
Declare
Functionmysql_drop_db Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long, ByVal db As
String) As Integer
Private
Declare
Functionmysql_shutdown Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Integer
Private
Declare
Functionmysql_dump_debug_info Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Integer
Private
Declare
Functionmysql_refresh Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long, _
Private
Declare
Functionmysql_kill Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long, pid As Long) As Integer
Private
Declare
Functionmysql_ping Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Integer
Private
Declare
Functionmysql_stat Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Long
Private
Declare
Functionmysql_get_server_info Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Long
Private
Declare
Functionmysql_get_client_info Lib <var>"libmysql.dll"</var> () As Long
Private
Declare
Functionmysql_get_host_info Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Long
Private
Declare
Functionmysql_get_proto_info Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Long
Private
Declare
Functionmysql_list_dbs Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long, ByVal wild As
String) As Long
Private
Declare
Functionmysql_list_tables Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long, ByVal wild As
String) As Long
Private
Declare
Functionmysql_list_fields Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long, ByVal table As
String, _
String) As Long
Private
Declare
Functionmysql_list_processes Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Long
Private
Declare
Functionmysql_store_result Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Long
Private
Declare
Functionmysql_use_result Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long) As Long
Private
Declare
Functionmysql_options Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long, ByVal opt As mysql_option, _
String) As Integer
Private
Declare
Submysql_free_result Lib <var>"libmysql.dll"</var> (ByVal result As Long)
Private
Declare
Submysql_data_seek Lib <var>"libmysql.dll"</var> (ByVal result As Long, ByVal offset As Long)
Private
Declare
Functionmysql_row_seek Lib <var>"libmysql.dll"</var> (ByVal result As Long, ByVal offset As Long) As Long
Private
Declare
Functionmysql_field_seek Lib <var>"libmysql.dll"</var> (ByVal result As Long, ByVal offset As Long) As Long
Private
Declare
Functionmysql_fetch_row Lib <var>"libmysql.dll"</var> (ByVal result As Long) As Long
Private
Declare
Functionmysql_fetch_lengths Lib <var>"libmysql.dll"</var> (ByVal result As Long) As Long
Private
Declare
Functionmysql_fetch_field Lib <var>"libmysql.dll"</var> (ByVal result As Long) As Long
Private
Declare
Functionmysql_escape_string Lib <var>"libmysql.dll"</var> (ByVal strTo As
String, ByVal from As
String, _
Private
Declare
Functionmysql_real_escape_string Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long, ByVal strTo As
String, _
String, ByVal Length As Long) As Long
Private
Declare
Submysql_debug Lib <var>"libmysql.dll"</var> (ByVal todebug As
String)
Private
Declare
Functionmysql_odbc_escape_string Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long, ByVal strTo As Long, _
Private
Declare
Submyodbc_remove_escape Lib <var>"libmysql.dll"</var> (ByVal pMySQL As Long, ByVal
nameAs
String)
Private
Declare
Functionmysql_thread_safe Lib <var>"libmysql.dll"</var> () As Long
PrivatepMySQL As Long <samp>' pointeur vers la référence de Mysql</samp>
PrivatebConnected As Boolean
PrivategaChamps() As Champs
PrivategbSnap As Boolean
PrivatepMyRs As Long <samp>' pointeur vers le recordset</samp>
PrivatepMyRow As Long <samp>' pointeur vers l'enregistrement actuel</samp>
Privatem_server As
String
Privatem_user As
String
Privatem_password As
String
Privatem_database As
String
Privatem_error As Long
Privatem_errormsg As
Private
FunctionStripNull(sName As
String) As
String
Dimf As Long
InStr(sName, vbNullChar)
Iff > 0
Then
Trim(
left$(sName, f - 1))
Else
End
If
End
Function
Private
FunctionCopieChaine(ByVal adresse As Long) As
String
Dimret As
String
Ifadresse > 0
Then
Space(256)
Trim(ret)
Ifret <> <var>""</var>
ThenCopieChaine =
left(ret,
Len(ret) - 1)
End
If
End
Function
Public
FunctionOpenMySQL(Optional ByRef Erreur As
String= <var>""</var>) As Long
IfbConnected
Then
Exit
Function
Ifmysql_real_connect(pMySQL, m_server, m_user, m_password, m_database, 0, <var>""</var>, 0) <> 0
Then
Else
End
If
End
Function
Public
SubStopMySQL()
IfNot bConnected
Then
Exit
Sub
End
Sub
Public
SubSetServer(ByVal Server As
String)
End
Sub
Public
SubSetUser(ByVal user As
String)
End
Sub
Public
SubSetPassword(ByVal password As
String)
End
Sub
Public
SubSetDatabase(ByVal Database As
String)
End
Sub
Public
FunctionGetLastError() As
String
DimpMyErrorMsg As Long
DimmyErrorMsg As
String
DimmyErrorCode As Long
On
Error
GoTofin
IfmyErrorCode <> 0
Then
Else
End
If
End
Function
Public
FunctionExecuteRequete(ByVal SQL As
String, Optional ByRef NbLigne As Long = 0) As Long
DimlRetour As Long
On
Error
GoTofin
If(mysql_query(pMySQL, SQL) = 0)
Then
Else
End
If
End
Function
Public
FunctionNbLigneMaJ() As Long
On
Error
GoTofin
End
Function
Public
FunctionLireStructure(ByVal Requete As
String) As Long
DimpMyRs As Long
DimpMyFields As Long
DimoField As MYSQL_FIELD
DimaStr As
String
DimCountFields As Integer
Dimi As Integer
Dimj As Long
Dimochamp As Champs
On
Error
GoTofin
If(mysql_query(pMySQL, Requete) = 0)
Then
If(pMyRs <> 0)
Then
If(CountFields > 0)
Then
Fori = 0 To CountFields - 1
Len(oField)
Withochamp
name)
type= oField.
type
End
With
Next
End
If
End
If
Else
End
If
Exit
Function
End
Function
Public
FunctionEnumTables() As
String
DimpMyRow As Long
Dimmyrow As Long
DimpMyRs As Long
Dimi As Long
DimsRetour As
String
On
Error
GoTofin
If(pMyRs <> 0)
Then
Fori = 0 To mysql_num_rows(pMyRs) - 1
Next
End
If
IfsRetour <> <var>""</var>
Then
Mid(sRetour, 1,
Len(sRetour) - 1)
End
If
End
Function
Public
FunctionOuvrirSnap(ByVal Requete As
String) As Long
If(mysql_query(pMySQL, Requete) = 0)
Then
IfDonneRecordCount > 0
Then
End
If
Else
End
If
End
Function
Public
FunctionIsEOF() As Boolean
DimbRetour As Boolean
On
Error
GoTofin
IfpMyRow <> 0
Then
End
If
End
Function
Public
FunctionLigneSuivante() As Long
DimlRetour As Long
On
Error
GoTofin
IfpMyRs = 0
Then
GoTofin
End
Function
Public
FunctionFermerSnap() As Long
On
Error
GoTofin
IfNot gbSnap
Then
GoTofin
End
Function
Public
FunctionDonneRecordCount() As Long
DimlRetour As Long
On
Error
GoTofin
IfpMyRs = 0
Then
GoTofin
End
Function
Public
FunctionDonneNumeroLigne() As Long
DimlRetour As Long
On
Error
GoTofin
IfpMyRs = 0
Then
GoTofin
IfpMyRow = 0
Then
GoTofin
End
Function
Public
Functionrs(ByVal Champs As
String) As Variant
DimlRetour As Long
DimnbFields As Long
DimpLengths As Long
Dimlengths() As Long
Dimi As Long
Dimj As Long
DimaChaine() As
String
Dimochamp As Champs
DimiIndex As Long
Dimmyrow As Long
DimsRetour As
String
Dimschaine As
String
Dimtexte As
String
On
Error
GoTofin
IfpMyRow = 0
Then
GoTofin
IfnbFields > 0
Then
ReDimlengths(0 To nbFields - 1)
Forj = 0 To nbFields - 1
Trim(ptr2str(myrow))
If
Len(
Trim(texte)) > lengths(j)
Then
Else
End
If
Next
Mid(schaine, 1,
Len(schaine) - 1)
Fori =
LBound(gaChamps) To
UBound(gaChamps)
If
UCase(gaChamps(i).nom) =
UCase(Champs)
Then
Exit
For
End
If
Next
IfiIndex <> -1
Then
Else
End
If
End
If
End
Function
Public
FunctionExportSnapToRs(Optional ByRef Retour As Boolean = False) As ADODB.Recordset
DimrsRetour As New ADODB.Recordset
Dimi As Long
DimoType As DataTypeEnum
DimbRetour As Boolean
DimsValeur As
String
IfNot gbSnap
Then
Exit
Function
On
Error
GoTofin
Fori =
LBound(gaChamps) + 1 To
UBound(gaChamps)
Select
CasegaChamps(i).
type
CaseFIELD_TYPE_DECIMAL
CaseFIELD_TYPE_TINY
CaseFIELD_TYPE_SHORT
CaseFIELD_TYPE_LONG
CaseFIELD_TYPE_FLOAT
CaseFIELD_TYPE_DOUBLE
CaseFIELD_TYPE_NULL
CaseFIELD_TYPE_TIMESTAMP
CaseFIELD_TYPE_LONGLONG
CaseFIELD_TYPE_INT24
CaseFIELD_TYPE_DATE
CaseFIELD_TYPE_TIME
CaseFIELD_TYPE_DATETIME
CaseFIELD_TYPE_YEAR
CaseFIELD_TYPE_NEWDATE
CaseFIELD_TYPE_ENUM
CaseFIELD_TYPE_SET
CaseFIELD_TYPE_TINY_BLOB
CaseFIELD_TYPE_MEDIUM_BLOB
CaseFIELD_TYPE_LONG_BLOB
CaseFIELD_TYPE_BLOB
CaseFIELD_TYPE_VAR_STRING
CaseFIELD_TYPE_STRING
Case
Else
End
Select
IfgaChamps(i).longueur > 0
Then
AppendgaChamps(i).nom, oType, gaChamps(i).longueur
Else
AppendgaChamps(i).nom, oType
End
If
Next
Open
Do
WhileNot IsEOF
AddNew
Fori =
LBound(gaChamps) + 1 To
UBound(gaChamps)
IfNot
IsNumeric(sValeur) And ChampEstNum(gaChamps(i).
type)
Then
Else
IfNot
IsDate(sValeur) And ChampEstDate(gaChamps(i).
type)
Then
Else
IfsValeur <> <var>"(Null)"</var>
Then
End
If
End
If
End
If
Next
SetExportSnapToRs = rsRetour
End
Function
Private
FunctionChampEstNum(ByVal typec As enum_field_types) As Boolean
Select
Casetypec
Case0, 1, 2, 3, 4, 5, 8, 9
Case
Else
End
Select
End
Function
Private
FunctionChampEstDate(ByVal typec As enum_field_types) As Boolean
Select
Casetypec
Case10, 11, 12, 13, 14
Case
Else
End
Select
End
Function