Fichier ini

marwouch Messages postés 10 Statut Membre -  
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,

PCn.Execute "CREATE SCHEMA 'marwa';"
a = ini.GetSections(App.Path & "\configini")
AA = Split(a, Chr(0))
For i = 0 To UBound(AA)
key = ini.GetKeysInSection(AA(i), App.Path & "\configini")
champ = Split(key, Chr(0))
For j = 0 To UBound(champ)
val = ini.GetKeyValue(AA(i), champ(j), App.Path & "\configini")
PCn.Execute "CREATE TABLE 'marwa'. 'AA(i)'(champ(j) val PRIMARY KEY ('champ(0)'));"
Next j
Next i

j'utilise mysql 5.1 et workbench 5.2 CE
j'ai un erreur dans la requête de création des tables qui m'a cassé la tête(syntaxe)
S.V.P,si quelqu'un a une idée........

10 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Je connais aussi très bien les appel à un fichier INI en VB6, mais sans connaitre ta classe c'est pas possible de trouver l'erreur.
    Tu peu mettre le code de ta classe ?
    A+
    2
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Je connais pas ton langage mais je connais bien les INI, tu ne devrais pas mettre..
    a = ini.GetSections(App.Path & "\configini.INI")

    A+
    Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
    1
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Y a BEAUCOUP plus simple que ça pour accéder aux fichiers INI.
    Je fais petite recherche dans mes archives et te colle un BAS. Mais pas tout de suite (pas le temps maintenant).
    1
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Voir la démo que j'ai ajouter
    A+
    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Ton projet est dans quel répertoire et le fichier fichier INI il est Où ?
    Avec ta classe pas moyen d'ouvrir un INI ailleurs que dans le Root. et avec un autre nom que celui du projet et il me semble que c'est ça que tu veux faire.
    ÉDIT : La fonction GetSection retourne toujours zéro
    Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
    1
  7. marwouch Messages postés 10 Statut Membre
     
    j'utilise vb6
    0
  8. marwouch Messages postés 10 Statut Membre
     
    bon j'utilise un module classe appelé clsINI pour la gestion du fichier ini
    après, dans ma forme j'ai mis Dim ini As New clsINI
    pour que je puisse utiliser les différentes fonctions de ce module
    0
  9. marwouch Messages postés 10 Statut Membre
     
    je suis sur que code du classe est juste parceque je l'ai testé,mais je veux créer une table dont les champs sont les keys du fichier ini et les types des champs sont les valeurs de ces keys,pour ce la j'ai crée les boucles for.
    en tous cas voici le code du classe:

    '********************************************************************************
    
    Option Explicit
    
    'The two API calls to read and write from the INI file
    Private Declare Function GetPrivateProfileString Lib "KERNEL32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
    Private Declare Function WritePrivateProfileString& Lib "KERNEL32" Alias "WritePrivateProfileStringA" (ByVal AppName$, ByVal KeyName$, ByVal keydefault$, ByVal FileName$)
    
    'the INI file's path
    Private var_INIFile As String
    'What to return if no data is found
    Private var_DefaultRetVal As String
    
    Private Sub Class_Initialize()
        'when the object is created we set the default file name
        ResetINIFilePath
        'our default for no data is "" (vbNullString)
        var_DefaultRetVal = ""
    End Sub
    
    Private Sub primeINIFile()
        'Priming the INI file stops the API calls from complaining if the file doesn't exist
        'I'm pretty sure there is a better way to do this but for the sake of
        'ease I just open the INIFile for append (so we don't screw with the data
        'already in it) and then close it right away. If the file was already there nothing
        'happens otherwise the file gets created
        Open var_INIFile For Append As #1
        Close #1
    End Sub
    
    '****************************** Start Let Properties ******************************
    Public Property Let INIFile(ByVal INIFileIn As String)
        'set the INI path
        var_INIFile = INIFileIn
    End Property
    
    Public Property Let DefaultReturnValue(ByVal RetVal As String)
        'set the default return value
        var_DefaultRetVal = RetVal
    End Property
    '****************************** End Let Properties ******************************
    
    '****************************** Start Get Properties ******************************
    Public Property Get INIFile() As String
        'return the INI path
        INIFile = var_INIFile
    End Property
    
    Public Property Get DefaultReturnValue() As String
        'return the default retun value
        DefaultReturnValue = var_DefaultRetVal
    End Property
    '****************************** End Get Properties ******************************
    
    Public Sub ResetINIFilePath()
        'this sets the INI file to the programs path and exe name but adds a .ini on the end
        'ex: the program c:\iniTest\test.exe would have the INI file c:\iniTest\test.ini
        'this set up makes for easy refrence to the file
        
        'if we are running in the root folder app.path will have a \ on the end.
        If Right(App.Path, 1) = "\" Then
            var_INIFile = "C:\" & App.EXEName & ".ini"
        Else 'Otherwise we need to add our own.
            var_INIFile = "C:\" & App.EXEName & ".ini"
        End If
    End Sub
    
    '****************************** Start Create Methods ******************************
    Public Sub CreateKeyValue(ByVal section As String, ByVal key As String, ByVal value As String, Optional ByVal INIFileLoc As String)
    '************************************************************
    'This little block of code is in all the sub and functions
    'that use the INI file. Since there is a file variable that
    'is set by default and can be modified by the user the
    'INIFileLoc parameter is optional. This block of code checks
    'to see if the argument was passed. If it was the UseFile var
    'is set to the passed file if not it is set to the local file
    'variable.
        Dim UseFile As String
        
        If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
            UseFile = var_INIFile
        Else
            UseFile = INIFileLoc
        End If
    '************************************************************
        'Debug.Print value
        'call the write profile string with all the parameters
        WritePrivateProfileString section, key, value, UseFile
    End Sub
    
    Public Sub CreateKey(ByVal section As String, ByVal key As String, Optional ByVal INIFileLoc As String)
        Dim UseFile As String
        
        If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
            UseFile = var_INIFile
        Else
            UseFile = INIFileLoc
        End If
        
        'call the write profile string but since we only want to create a key but
        'not give it a value we pass "" (vbNullString) for the value
        WritePrivateProfileString section, key, "", UseFile
    End Sub
    '****************************** End Create Methods ******************************
    
    '****************************** Start Get Methods ******************************
    Public Function GetKeyValue(ByVal section As String, ByVal key As String, Optional ByVal INIFileLoc As String, Optional Default$) As String
        Dim RetVal As String
        Dim KeyLen As Integer
        Dim UseFile As String
        
        If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
            UseFile = var_INIFile
        Else
            UseFile = INIFileLoc
        End If
        
        'call our priming function to be sure the file exists
        'primeINIFile
        
        'ok I just choose 255 as a nice number for the max length of data being retrieved
        'I think you can change it and the API calls will still work. It just creates a
        'string of that length in memory for the API call to write the results of it's action
        
        'to if the key is not found the contents of var_DefaultRetVal are returned
        RetVal = String$(255, 0)
        KeyLen = GetPrivateProfileString(section, key, Default, RetVal, Len(RetVal), UseFile)
        
        'return a null string if the return has 0 length
        If KeyLen = 0 Then
            GetKeyValue = Default
            
        Else ' or the key's value
            GetKeyValue = Left$(RetVal, KeyLen)
        End If
    End Function
    
    Public Function GetKeysInSection(ByVal section As String, Optional ByVal INIFileLoc As String) As String
        Dim RetVal As String
        Dim KeyLen As Integer
        Dim UseFile As String
        
        If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
            UseFile = var_INIFile
        Else
            UseFile = INIFileLoc
        End If
        
        'prime the INI to make sure it exists
        primeINIFile
        
        'since we could have a lot of keys in one section we are going to use a 1024 char buffer
        RetVal = String$(1024, 0)
        KeyLen = GetPrivateProfileString(section, vbNullString, var_DefaultRetVal, RetVal, Len(RetVal), UseFile)
        
        'if no keys are found then return "" (vbNullString)
        If KeyLen = 0 Then
            GetKeysInSection = ""
        Else
            'if the retval is > 0 then return the results
            'since we are getting multiple keys but returning them as one string the
            'programer should use the split() function in the returned value with
            'chr$(0) being the delimiter
            GetKeysInSection = Left$(RetVal, KeyLen - 1)
        End If
    End Function
    
    Public Function GetSections(Optional ByVal INIFileLoc As String) As String
        Dim RetVal As String
        Dim KeyLen As Integer
        Dim UseFile As String
        
        If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
            UseFile = var_INIFile
        Else
            UseFile = INIFileLoc
        End If
        
        'prime the INI to make sure it exists
        primeINIFile
        
        'since we could have a lot of sections in one file we are going to use a 1024 char buffer
        RetVal = String$(2000, 0)
        KeyLen = GetPrivateProfileString(vbNullString, vbNullString, var_DefaultRetVal, RetVal, Len(RetVal), UseFile)
        
        'if no sections are found then return "" (vbNullString)
        If KeyLen = 0 Then
            GetSections = ""
        Else
            'if the retval is > 0 then return the results
            'since we are getting multiple sections but returning them as one string the
            'programer should use the split() function in the returned value with
            'chr$(0) being the delimiter
            GetSections = Left$(RetVal, KeyLen - 1)
        End If
    End Function
    '****************************** End Get Methods ******************************
    
    '****************************** Start Delete Methods ******************************
    Public Sub DeleteKeyValue(ByVal section As String, ByVal key As String, Optional ByVal INIFileLoc As String)
        Dim UseFile As String
        
        If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
            UseFile = var_INIFile
        Else
            UseFile = INIFileLoc
        End If
        
        'to delete the key's value just write a null string to it
        WritePrivateProfileString section, key, "", UseFile
    End Sub
    
    Public Sub DeleteKey(ByVal section As String, ByVal key As String, Optional ByVal INIFileLoc As String)
        Dim UseFile As String
        
        If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
            UseFile = var_INIFile
        Else
            UseFile = INIFileLoc
        End If
        
        'to delete a key use the actual vbnullstring object ... for some reason
        'it behaves differently that passing the API ""
        WritePrivateProfileString section, key, vbNullString, UseFile
    End Sub
    
    Public Sub DeleteSection(ByVal section As String, Optional ByVal INIFileLoc As String)
        Dim UseFile As String
        
        If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
            UseFile = var_INIFile
        Else
            UseFile = INIFileLoc
        End If
        
        'to delete a section it's the same thing as a key but we write a vbNullString
        'to the key name and value
        WritePrivateProfileString section, vbNullString, vbNullString, UseFile
    End Sub
    '****************************** End Delete Methods ******************************
    
    '****************************** Start Rename Methods ******************************
    Public Sub RenameKey(ByVal section As String, ByVal CurrentKey As String, ByVal NewKey As String, Optional ByVal INIFileLoc As String)
        Dim UseFile As String
        
        If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
            UseFile = var_INIFile
        Else
            UseFile = INIFileLoc
        End If
        
        'make sure the file exists
        primeINIFile
        
        'woohoo code reuse!
        'get the value and create the new key
        CreateKeyValue section, NewKey, GetKeyValue(section, CurrentKey, UseFile), UseFile
        'delete the old key
        DeleteKey section, CurrentKey, UseFile
    End Sub
    
    Public Sub RenameSection(ByVal CurrentSection As String, ByVal NewSection As String, Optional ByVal INIFileLoc As String)
        Dim KeyList() As String
        Dim KeyCount As Integer
        Dim index As Integer
        Dim UseFile As String
        
        If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
            UseFile = var_INIFile
        Else
            UseFile = INIFileLoc
        End If
        
        'makle sure the file exists
        primeINIFile
        
        'renaming a section works the same way.
        'we get all the key names into an array
        KeyList = Split(GetKeysInSection(CurrentSection, UseFile), Chr$(0))
        'get the number of keys
        KeyCount = UBound(KeyList)
        
        'for each key in the array
        For index = 0 To KeyCount
            'create the new key in the new section
            CreateKeyValue NewSection, KeyList(index), GetKeyValue(CurrentSection, KeyList(index), UseFile), UseFile
        Next index
        
        'delete the old section
        DeleteSection CurrentSection, UseFile
    End Sub
    '****************************** End Rename Methods ******************************
    
    
    0
  10. marwouch Messages postés 10 Statut Membre
     
    merci bq pour votre attention
    0
  11. marwouch Messages postés 10 Statut Membre
     
    oui c'est très utile mais,est ce que vous pouvez me corriger la requête?
    0