Accueil > > > GESTION BASE DE DONNEE
GESTION BASE DE DONNEE
Information sur la source
Description
Ce programme doit être pris comme un exemple de gestion interne des données. Ceci est un moteur pour lire, écrire, modifier les données avec une méthode d'accès originale. Cette suite de sous-programmes permet de : creer une base qui sera automatiquement indexe. De plus par non repetition des zones, cette organisation permet de gagner de la place.
Source
- GESTIONNAIRE DE BASE DE DONNEES SUPER INDEXE
- '
- ' VERSION 1.0 du 23/07/1999 GERARD VIENT (FRANCE)
- ' Langage testé :
- ' VISUAL BASIC 5
- ' IL EXISTE UNE VERSION EN QUICK BASIC
- '
- ' Ceci est une suite de modules pour gérer une base de donnée
- ' dont tous les champs sont indéxés
- ' Le produit permet de compresser les données en évitant la répétition
- ' des données identiques (exemple 49100 n'apparaitra qu'une fois dans la base)
- ' Pour voir la structure des fichiers aller dans le module creafic
- ' longueur des zones en variables de 0 à 255 caracteres
- ' pas de caractère chr(0) dans les variables !
- ' 255 champs maxi
- ' Pour modifier un enregistrement :
- ' - le supprimer
- ' - le créer avec les modifications
- ' NOTES :
- ' - la structure est un peu compliquée mais elle permet de bons temps de réponse
- ' la lecture séquentielle est la moins performante
- ' - Pour faire une recherche sur x zones de la base :
- ' exemple :
- ' une base contient nom prenom
- ' faire un concaténation des deux champs et les mettres dans un nouveau champ
- ' ensuite faire la recherche sur ce champ
- ' - La suppression consiste à mettre le valeur 0 dans le numéro de champ
- ' pas de suppression réel , il faut penser à réorganiser la base en la copiant dans une autre
- '
- ' Il faut déclarer ces variables !
- ' on peut ouvrir plusieurs bases (ici 3 3*7)
- ' 1 à 7, 8 à 14, 15 à 21
- '
-
- Public Type enregistrement
- enr As String
- End Type
- Public anccur, numero, numero2, enra(255), donnee(21, 256), donneea(21, 256), modif, erreur, nbresauve
- Const x1 = 256# * 256# * 256#
- Const x2 = 256# * 256#
- Const x3 = 256#
-
- Sub creafic(nom$)
- '
- ' sp de creation d un fichier super indexe
- '
- ' STRUCTURE :
- ' Les fichiers xxxxxxxx.1 . xxxxxxxx.6 :
- ' 7 octets (debut de clef)
- ' 1 octet ( sert pour la recherche séquentiel champ de 1 à 8
- ' pour une recherche plus rapide)
- ' 4 octets (pointeur sur clef dans fichier .dat)
- ' le fichier xxxxxxxx.dat :
- ' pour le premier enregistrement d une serie
- ' 4 octets indique l enregistrement suivant ( a zero si rien)
- ' 4 octets indique le dernier enregistrement de la serie
- ' 4 octets pointe sur la zone clef
- ' 1 octet numero de champ
- ' 4 octets pointe sur le champ suivant
- ' x octets clef + chr$(0)
- ' pour les autres de la serie
- ' 4 octets indique l enregistrement suivant
- ' 4 octets indique l enregistrement precedant
- ' 4 octets pointe sur la zone clef
- ' 1 octet numero de champ
- ' 4 octets pointe sur le champ suivant
-
- Open nom$ + ".dat" For Binary As 1
- a$ = mkl(0)
- Put #1, 1, a$
- Close #1
- a$ = String$(7, 0) + Chr$(255) + mkl(0) + String$(7, 255) + Chr$(255) + mkl(0)
-
- For g = 1 To 6
- ext$ = Mid$(Str$(g), 2)
- Open nom$ + "." + ext$ For Binary As numero + 1
- Put numero + 1, 1, a$
- Close numero + 1
- Next g
- End Sub
-
- Sub basechoixindex(numero, enr4$, enr7$, g, clerech7$, clerech$, recorn, numero2, anccur, trouve)
- '
- ' sp pour choix du fichier index
- ' on choisit l'index suivant le code ASCII du premier caractère
- '
-
- mini = 1
- anccur = 1
- trouve = 0
- clerech$ = donneea(numero, g) + Chr$(0)
- clerech2$ = clerech$
- clerech7$ = Left$(clerech$ + String$(7, 255), 7)
- Select Case Asc(clerech$)
- Case Is <= 32
- numero2 = numero + 1
- Case Is <= 64
- numero2 = numero + 2
- Case Is <= 68
- numero2 = numero + 3
- Case Is <= 77
- numero2 = numero + 4
- Case Is <= 82
- numero2 = numero + 5
- Case Else
- numero2 = numero + 6
- End Select
-
- maxi = LOF(numero2) / 12
- While mini < maxi
- cur = Int((maxi - mini) / 2) + mini
- If cur <= mini Then
- mini = maxi
- anccur = cur + 1
- Else
- cur2# = (cur - 1) * 12 + 1
- Get numero2, cur2#, enr7$
- If clerech7$ = enr7$ Then
- Get numero2, cur2# + 8, enr4$
- recorn = cvl(enr4$)
- Get numero, recorn, clerech2$
- If clerech$ = clerech2$ Then
- trouve = 1
- mini = maxi
- anccur = cur
- Else
- If clerech2$ < clerech$ Then
- anccur = cur + 1
- mini = cur
- Else
- anccur = cur
- maxi = cur
- End If
- End If
- Else
- If enr7$ < clerech7$ Then
- anccur = cur + 1
- mini = cur
- Else
- anccur = cur
- maxi = cur
- End If
- End If
- End If
- Wend
- End Sub
-
- Sub baselectart(trouve, numero, recorn, aa As String, b$, d$, e$)
- '
- ' sp de lecture d'un enregistrement
- '
- trouve = 1
- Get numero, recorn + 8, e$
- donnee(numero, nbre) = recorn
- Get numero, cvl(e$), d$
- donneea(numero, nbre) = Left$(d$, InStr(d$, Chr$(0)) - 1)
- Get numero, recorn + 13, e$
- recorn = cvl(e$)
- aa = Chr$(0)
- While aa <> b$
- Get numero, recorn + 12, aa
- Get numero, recorn + 8, e$
- Get numero, cvl(e$), d$
- donneea(numero, Asc(aa)) = Left$(d$, InStr(d$, Chr$(0)) - 1)
- donnee(numero, Asc(aa)) = recorn
- Get numero, recorn + 13, e$
- recorn = cvl(e$)
- Wend
- recorn = 0
- End Sub
-
- Sub closefic(nom$, numero)
- '
- ' sp de fermeture
- '
- Close numero
- For g = 1 To 6
- Close numero + g
- Next g
- End Sub
-
- Sub creaenr(nom$, numero, nbre)
- '
- ' sp de creation les donnees sont dans donneea(numero,)
- ' les données vides ne sont pas enregistrées
- '
- Dim place, ancien, ancien2 As Long, recor As enregistrement, aa As enregistrement
- mkl0$ = mkl(0)
- enr1$ = " "
- enr4$ = String$(4, 0)
- enr7$ = String$(7, 0)
- ancien = 0
- ancien2 = 0
- place = 0
-
- For g = nbre To 1 Step -1
- If donneea(numero, g) <> "" Then
- chrg$ = Chr$(g)
- Call basechoixindex(numero, enr4$, enr7$, g, clerech7$, clerech$, recorn, numero2, anccur, trouve)
- If trouve = 0 Then
- cur2 = (anccur - 1) * 12 + 1
- place = LOF(numero) + 1
- recor.enr = mkl0$ + mkl(place) + mkl(place + 17) + chrg$ + mkl(ancien) + clerech$
- Put numero, place, recor.enr
- a# = LOF(numero2) - cur2 + 1
- If a# <= 4096 Then
- pt# = cur2
- enr$ = String$(a#, 0)
- Get numero2, pt#, enr$
- Put numero2, pt# + 12, enr$
- Else
- pt# = LOF(numero2) - 4096 + 1
- enr$ = String$(4096, 0)
- While a# <> 0
- Get numero2, pt#, enr$
- Put numero2, pt# + 12, enr$
- a# = a# - 4096
- If a# <= 4096 Then
- pt# = cur2
- enr$ = String$(a#, 0)
- Get numero2, pt#, enr$
- Put numero2, pt# + 12, enr$
- a# = 0
- Else
- pt# = pt# - 4096
- End If
- Wend
- End If
- If g > 8 Then
- enr$ = clerech7$ + Chr$(0) + mkl(place + 17)
- Else
- enr$ = clerech7$ + Chr$(2 ^ (g - 1)) + mkl(place + 17)
- End If
- Put #numero2, cur2, enr$
- Else
- place = LOF(numero) + 1
- Get numero, recorn - 13, enr4$
- recor2# = cvl(enr4$)
- enr4$ = mkl(place)
- recor.enr = enr4$
- Put numero, recor2#, recor.enr
- Put numero, recorn - 13, recor.enr
- recor.enr = mkl0$ + mkl(recor2#) + mkl(recorn) + chrg$ + mkl(ancien)
- Put numero, place, recor.enr
- cur2 = (anccur - 1) * 12 + 1
- '
- ' ici on met à jour le code dans l'index pour la recherche séquentielle
- '
- If g < 9 Then
- Get #numero2, cur2 + 7, enr1$
- a = Asc(enr1$)
- b = 2 ^ (g - 1)
- enr1$ = Chr$(a Or b)
- Put #numero2, cur2 + 7, enr1$
- End If
- End If
- If ancien2 = 0 Then
- ancien2 = place
- End If
- ancien = place
- donnee(numero, g) = place
- End If
- Next g
- If ancien2 <> 0 Then
- aa.enr = mkl(ancien)
- Put numero, ancien2 + 13, aa.enr
- End If
- End Sub
-
- Sub lectfic(numero, nbre, trouve)
- '
- ' sp de lecture
- ' clef compléte
- '
- enr4$ = String$(4, 0)
- enr7$ = String$(7, 0)
- Call basechoixindex(numero, enr4$, enr7$, nbre, clerech7$, clerech$, recorn, numero2, anccur, trouve)
- If trouve = 1 Then
- a$ = " "
- b$ = Chr$(nbre)
- c$ = " "
- While recorn > 0
- Get numero, recorn - 5, a$
- If a$ = b$ Then
- recorn = -recorn
- Else
- Get numero, recorn - 17, c$
- recorn = cvl(c$)
- If recorn <> 0 Then
- recorn = recorn + 17
- End If
- End If
- Wend
- If recorn = 0 Then
- trouve = 0
- Else
- a$ = Chr$(0)
- d$ = String$(256, 0)
- e$ = " "
- recorn = Abs(recorn)
- donnee(numero, nbre) = recorn - 17
- Get numero, recorn - 4, e$
- recorn = cvl(e$)
- While a$ <> b$
- Get numero, recorn + 12, a$
- Get numero, recorn + 8, e$
- Get numero, cvl(e$), d$
- donneea(numero, Asc(a$)) = Left$(d$, InStr(d$, Chr$(0)) - 1)
- donnee(numero, Asc(a$)) = recorn
- Get numero, recorn + 13, e$
- recorn = cvl(e$)
- Wend
- End If
- End If
- End Sub
-
- Sub lectfic2(numero, nbre, trouve)
- '
- ' sp de lecture avec clef incomplete
- '
- enr4$ = String$(4, 0)
- enr7$ = String$(7, 0)
- mini = 1
- anccur = 1
- trouve = 0
- clerech$ = donneea(numero, nbre)
- clerech2$ = clerech$
- l = Len(clerech$)
- If l < 7 Then
- clerech7$ = clerech$
- Else
- clerech7$ = Left$(clerech$, 7)
- End If
- Select Case Asc(clerech$)
- Case Is <= 32
- numero2 = numero + 1
- Case Is <= 64
- numero2 = numero + 2
- Case Is <= 68
- numero2 = numero + 3
- Case Is <= 77
- numero2 = numero + 4
- Case Is <= 82
- numero2 = numero + 5
- Case Else
- numero2 = numero + 6
- End Select
- maxi = LOF(numero2) / 12
- While mini < maxi
- cur = Int((maxi - mini) / 2) + mini
- If cur <= mini Then
- mini = maxi
- anccur = cur + 1
- Else
- cur2 = (cur - 1) * 12 + 1
- Get numero2, cur2, enr7$
- If clerech7$ = Left$(enr7$, l) Then
- Get numero2, cur2 + 8, enr4$
- recorn = cvl(enr4$)
- Get numero, recorn, clerech2$
- If clerech$ = clerech2$ Then
- While clerech$ = clerech2$ And cur > 1
- cur = cur - 1
- cur2 = (cur - 1) * 12 + 1
- Get numero2, cur2, enr7$
- If clerech7$ = Left$(enr7$, l) Then
- Get numero2, cur2 + 8, enr4$
- recor2# = cvl(enr4$)
- Get numero, recor2#, clerech2$
- If clerech$ = clerech2$ Then
- recorn = recor2#
- End If
- Else
- clerech2$ = String$(l, Chr$(0))
- End If
- Wend
- trouve = 1
- mini = maxi
- anccur = cur + 1
- Else
- If clerech2$ < clerech$ Then
- anccur = cur + 1
- mini = cur
- Else
- anccur = cur
- maxi = cur
- End If
- End If
- Else
- If enr7$ < clerech7$ Then
- anccur = cur + 1
- mini = cur
- Else
- anccur = cur
- maxi = cur
- End If
- End If
- End If
- Wend
- If trouve = 1 Then
- ok = 0
- Else
- ok = 1
- End If
- While ok = 0
- If trouve = 1 Then
- trouve = 0
- a$ = " "
- b$ = Chr$(nbre)
- c$ = " "
- While recorn > 0
- Get numero, recorn - 5, a$
- If a$ = b$ Then
- recorn = -recorn
- trouve = 1
- Else
- Get numero, recorn - 17, c$
- recorn = cvl(c$)
- If recorn <> 0 Then
- recorn = recorn + 17
- End If
- End If
- Wend
- If recorn = 0 Then
- cur = cur + 1
- cur2 = (cur - 1) * 12 + 1
- Get numero2, cur2, enr7$
- If clerech7$ = Left$(enr7$, l) Then
- Get numero2, cur2 + 8, enr4$
- recorn = cvl(enr4$)
- Get numero, recorn, clerech2$
- If clerech$ <> clerech2$ Then ok = 1 Else trouve = 1
- Else
- ok = 1
- End If
- Else
- a$ = Chr$(0)
- d$ = String$(256, 0)
- e$ = " "
- recorn = Abs(recorn)
- Get numero, recorn, d$
- donneea(numero, nbre) = Left$(d$, InStr(d$, Chr$(0)) - 1)
- donnee(numero, nbre) = recorn - 17
- Get numero, recorn - 4, e$
- recorn = cvl(e$)
- While a$ <> b$
- Get numero, recorn + 12, a$
- Get numero, recorn + 8, e$
- Get numero, cvl(e$), d$
- donneea(numero, Asc(a$)) = Left$(d$, InStr(d$, Chr$(0)) - 1)
- donnee(numero, Asc(a$)) = recorn
- Get numero, recorn + 13, e$
- recorn = cvl(e$)
- ok = 1
- Wend
- End If
- End If
- Wend
- End Sub
-
- Sub lectnext(numero, nbre, trouve)
- '
- ' sp de lecture de l enregistrement suivant
- ' trouve = 9 fin de fichier
- ' trouve = 1 ok trouve suivant
- '
- Dim aa As String
- finfic = numero + 5
- debfic = numero
- record# = donnee(numero, nbre)
- chr0$ = Chr$(0)
- aa = Chr$(0)
- b$ = Chr$(nbre)
- c2 = 2 ^ (nbre - 1)
- e$ = String$(4, 0)
- d$ = String$(256, 0)
- enr4$ = String$(4, 0)
- enr7$ = String$(7, 0)
- trouve = 0
- a = debfic
- x = 8
- If record# = 0 Then
- numero2 = numero + a
- While a <= finfic
- x = x + 12
- Get #numero2, x, aa
- anccur = (x - 8) / 12
- If (Asc(aa) And c2) > 0 Or nbre > 8 Then
- Get #numero2, x + 1, e$
- record# = cvl(e$)
- If record# = 0 Then
- a = a + 1
- numero2 = numero + a
- x = 8
- If a > finfic Then
- trouve = 9
- donnee(numero, nbre) = 0
- End If
- Else
- record# = record# - 17
- While record# <> 0
- Get #numero, record# + 12, aa
- If aa = b$ Then
- Call baselectart(trouve, numero, record#, aa, b$, d$, e$)
- a = numero + 9
- Else
- Get #numero, record#, e$
- record# = cvl(e$)
- End If
- Wend
- End If
- End If
- Wend
- End If
- While trouve = 0
- If record# = 0 Then
- record# = anccur * 12 + 1
- anccur = anccur + 1
- Get #numero2, record# + 7, aa
- Get #numero2, record# + 8, e$
- record# = cvl(e$) - 17
- While (Asc(aa) And c2) = 0 And nbre < 9 And record# > 0
- record# = anccur * 12 + 1
- anccur = anccur + 1
- Get #numero2, record# + 7, aa
- Get #numero2, record# + 8, e$
- record# = cvl(e$) - 17
- Wend
- If record# < 0 Then
- numero2 = numero2 + 1
- a = numero2 - numero
- x = 8
- If a > numero + 5 Then
- trouve = 9
- donnee(numero, nbre) = 0
- End If
- While a < 7
- x = x + 12
- Get #numero2, x, aa
- If (Asc(aa) And c2) > 0 Or nbre > 8 Then
- Get #numero2, x + 1, e$
- record# = cvl(e$)
- If record# = 0 Then
- a = a + 1
- numero2 = numero + a
- x = 8
- If a > numero + 5 Then
- trouve = 9
- donnee(numero, nbre) = 0
- End If
- Else
- record# = record# - 17
- While record# > 0
- Get #numero, record# + 12, aa
- If aa = b$ Then
- Call baselectart(trouve, numero, record#, aa, b$, d$, e$)
- a = 9
- Else
- Get #numero, record#, e$
- record# = cvl(e$)
- End If
- Wend
- End If
- End If
- Wend
- Else
- Get #numero, record# + 8, e$
- donnee(numero, nbre) = record#
- Get #numero, cvl(e$), d$
- donneea(numero, nbre) = Left$(d$, InStr(d$, Chr$(0)) - 1)
- While record# > 0
- Get #numero, record# + 12, aa
- If aa = b$ Then
- Call baselectart(trouve, numero, record#, aa, b$, d$, e$)
- Else
- Get #numero, record#, e$
- record# = cvl(e$)
- End If
- Wend
- End If
- Else
- Get #numero, record#, e$
- record# = cvl(e$)
- While record# > 0
- Get #numero, record# + 12, aa
- If aa = b$ Then
- Call baselectart(trouve, numero, record#, aa, b$, d$, e$)
- Else
- Get #numero, record#, e$
- record# = cvl(e$)
- End If
- Wend
- End If
- Wend
- End Sub
-
- Sub lectprev(numero, nbre, trouve)
- '
- ' sp de lecture de l enregistrement precedant
- ' trouve = 9 fin de fichier
- ' trouve = 1 ok trouve precedant
- '
- Dim aa As String
- record# = donnee(numero, nbre)
- chr0$ = Chr$(0)
- aa = Chr$(0)
- b$ = Chr$(nbre)
- c2 = 2 ^ (nbre - 1)
- e$ = String$(4, 0)
- e2$ = String$(4, 0)
- d$ = String$(256, 0)
- enr4$ = String$(4, 0)
- enr7$ = String$(7, 0)
- trouve = 0
- a = numero + 5
- x = LOF(numero + a) - 4
- If record# = 0 Then
- While a > 1
- numero2 = numero + a
- anccur = (x - 8) / 12
- x = x - 12
- Get #numero2, x, aa
- If (Asc(aa) And c2) > 0 Or nbre > 8 Then
- Get #numero2, x + 1, e$
- record# = cvl(e$)
- If record# = 0 Then
- a = a - 1
- numero2 = numero + a
- x = LOF(numero2) - 4
- If a < numero Then
- trouve = 9
- donnee(numero, nbre) = 0
- End If
- Else
- record# = cvl(e$) - 13
- If record# > 0 Then
- Get #numero, record#, e$
- record# = cvl(e$)
- End If
- While record# <> 0
- Get #numero, record# + 12, aa
- If aa = b$ Then
- Call baselectart(trouve, numero, record#, aa, b$, d$, e$)
- a = 0
- End If
- If record# > 0 Then
- Get #numero, record# + 4, e$
- Get #numero, record# + 8, e2$
- If record# + 17 = cvl(e2$) Then
- record# = 0
- Else
- record# = cvl(e$)
- End If
- End If
- Wend
- End If
- End If
- Wend
- End If
- While trouve = 0
- If record# = 0 Then
- anccur = anccur - 1
- a = numero2 - numero
- trouve = 0
- record# = (anccur - 2) * 12 + 1
- Get #numero2, record# + 7, aa
- Get #numero2, record# + 8, e$
- record# = cvl(e$) - 13
- While (Asc(aa) And c2) = 0 And nbre < 9 And record# > 13
- anccur = anccur - 1
- record# = (anccur - 2) * 12 + 1
- Get #numero2, record# + 7, aa
- Get #numero2, record# + 8, e$
- record# = cvl(e$) - 13
- Wend
- If record# > 0 Then
- Get #numero, record#, e$
- record# = cvl(e$)
- End If
- If record# < 0 Then
- a = a - 1
- numero2 = numero + a
- If a < 1 Then
- trouve = 9
- donnee(numero, nbre) = 0
- Else
- x = LOF(numero + a) - 4
- End If
- While a > 0
- x = x - 12
- Get #numero2, x, aa
- If (Asc(aa) And c2) > 0 Or nbre > 8 Then
- Get #numero2, x + 1, e$
- record# = cvl(e$)
- If record# = 0 Then
- a = a - 1
- numero2 = numero + a
- x = LOF(numero2) - 4
- If a < 1 Then
- trouve = 9
- donnee(numero, nbre) = 0
- End If
- Else
- record# = record# - 13
- If record# > 0 Then
- Get #numero, record#, e$
- record# = cvl(e$)
- End If
- While record# > 0
- Get #numero, record# + 12, aa
- If aa = b$ Then
- Call baselectart(trouve, numero, record#, aa, b$, d$, e$)
- a = 0
- End If
- If record# > 0 Then
- Get #numero, record# + 4, e$
- Get #numero, record# + 8, e2$
- If record# + 17 = cvl(e2$) Then
- record# = 0
- Else
- record# = cvl(e$)
- End If
- End If
- Wend
- End If
- End If
- Wend
- Else
- Get #numero, record# + 8, e$
- donnee(numero, nbre) = record#
- Get #numero, cvl(e$), d$
- donneea(numero, nbre) = Left$(d$, InStr(d$, Chr$(0)) - 1)
- While record# > 0
- If record# <> 0 Then
- Get #numero, record# + 12, aa
- If aa = b$ Then
- Call baselectart(trouve, numero, record#, aa, b$, d$, e$)
- Else
- Get #numero, record# + 4, e$
- Get #numero, record# + 8, e2$
- If record# + 17 = cvl(e2$) Then
- record# = 0
- Else
- record# = cvl(e$)
- End If
- End If
- End If
- Wend
- End If
- Else
- While record# > 0
- Get #numero, record# + 4, e$
- Get #numero, record# + 8, e2$
- If record# + 17 = cvl(e2$) Then
- record# = 0
- Else
- record# = cvl(e$)
- End If
- If record# <> 0 Then
- Get #numero, record# + 12, aa
- If aa = b$ Then
- Call baselectart(trouve, numero, record#, aa, b$, d$, e$)
- End If
- End If
- Wend
- End If
- Wend
- End Sub
-
- Sub openfic(nom$, numero)
- '
- ' sp d ouverture de fichier
- '
- ' la zone indexe est mise dans enra(numero)
- '
- Open nom$ + ".dat" For Binary As numero
- For g = 1 To 6
- Open nom$ + "." + Mid$(Str$(g), 2) For Binary As numero + g
- Next g
- End Sub
-
- Function mkl(chiffre)
- '
- ' sp pour transformer un nombre en 4 caractères
- ' Note : nombre entier et positif
- '
- chiffre2 = chiffre
- a1$ = Chr(Int(chiffre2 / x1))
- chiffre2 = chiffre2 - Asc(a1$) * x1
- a2$ = Chr(Int(chiffre2 / x2))
- chiffre2 = chiffre2 - Asc(a2$) * x2
- a3$ = Chr(Int(chiffre2 / x3))
- chiffre2 = chiffre2 - Asc(a3$) * x3
- a4$ = Chr(Int(chiffre2))
- mkl = a1$ + a2$ + a3$ + a4$
- End Function
-
- Function cvl(chiffre$)
- '
- ' sp pour tranformer une chaine de 4 caractères
- ' en un nombre entier positif
- '
- cvl = Asc(Left(chiffre$, 1)) * x1 + Asc(Mid(chiffre$, 2, 1)) * x2 + Asc(Mid(chiffre$, 3, 1)) * x3 + Asc(Right(chiffre$, 1))
- End Function
GESTIONNAIRE DE BASE DE DONNEES SUPER INDEXE
'
' VERSION 1.0 du 23/07/1999 GERARD VIENT (FRANCE)
' Langage testé :
' VISUAL BASIC 5
' IL EXISTE UNE VERSION EN QUICK BASIC
'
' Ceci est une suite de modules pour gérer une base de donnée
' dont tous les champs sont indéxés
' Le produit permet de compresser les données en évitant la répétition
' des données identiques (exemple 49100 n'apparaitra qu'une fois dans la base)
' Pour voir la structure des fichiers aller dans le module creafic
' longueur des zones en variables de 0 à 255 caracteres
' pas de caractère chr(0) dans les variables !
' 255 champs maxi
' Pour modifier un enregistrement :
' - le supprimer
' - le créer avec les modifications
' NOTES :
' - la structure est un peu compliquée mais elle permet de bons temps de réponse
' la lecture séquentielle est la moins performante
' - Pour faire une recherche sur x zones de la base :
' exemple :
' une base contient nom prenom
' faire un concaténation des deux champs et les mettres dans un nouveau champ
' ensuite faire la recherche sur ce champ
' - La suppression consiste à mettre le valeur 0 dans le numéro de champ
' pas de suppression réel , il faut penser à réorganiser la base en la copiant dans une autre
'
' Il faut déclarer ces variables !
' on peut ouvrir plusieurs bases (ici 3 3*7)
' 1 à 7, 8 à 14, 15 à 21
'
Public Type enregistrement
enr As String
End Type
Public anccur, numero, numero2, enra(255), donnee(21, 256), donneea(21, 256), modif, erreur, nbresauve
Const x1 = 256# * 256# * 256#
Const x2 = 256# * 256#
Const x3 = 256#
Sub creafic(nom$)
'
' sp de creation d un fichier super indexe
'
' STRUCTURE :
' Les fichiers xxxxxxxx.1 . xxxxxxxx.6 :
' 7 octets (debut de clef)
' 1 octet ( sert pour la recherche séquentiel champ de 1 à 8
' pour une recherche plus rapide)
' 4 octets (pointeur sur clef dans fichier .dat)
' le fichier xxxxxxxx.dat :
' pour le premier enregistrement d une serie
' 4 octets indique l enregistrement suivant ( a zero si rien)
' 4 octets indique le dernier enregistrement de la serie
' 4 octets pointe sur la zone clef
' 1 octet numero de champ
' 4 octets pointe sur le champ suivant
' x octets clef + chr$(0)
' pour les autres de la serie
' 4 octets indique l enregistrement suivant
' 4 octets indique l enregistrement precedant
' 4 octets pointe sur la zone clef
' 1 octet numero de champ
' 4 octets pointe sur le champ suivant
Open nom$ + ".dat" For Binary As 1
a$ = mkl(0)
Put #1, 1, a$
Close #1
a$ = String$(7, 0) + Chr$(255) + mkl(0) + String$(7, 255) + Chr$(255) + mkl(0)
For g = 1 To 6
ext$ = Mid$(Str$(g), 2)
Open nom$ + "." + ext$ For Binary As numero + 1
Put numero + 1, 1, a$
Close numero + 1
Next g
End Sub
Sub basechoixindex(numero, enr4$, enr7$, g, clerech7$, clerech$, recorn, numero2, anccur, trouve)
'
' sp pour choix du fichier index
' on choisit l'index suivant le code ASCII du premier caractère
'
mini = 1
anccur = 1
trouve = 0
clerech$ = donneea(numero, g) + Chr$(0)
clerech2$ = clerech$
clerech7$ = Left$(clerech$ + String$(7, 255), 7)
Select Case Asc(clerech$)
Case Is <= 32
numero2 = numero + 1
Case Is <= 64
numero2 = numero + 2
Case Is <= 68
numero2 = numero + 3
Case Is <= 77
numero2 = numero + 4
Case Is <= 82
numero2 = numero + 5
Case Else
numero2 = numero + 6
End Select
maxi = LOF(numero2) / 12
While mini < maxi
cur = Int((maxi - mini) / 2) + mini
If cur <= mini Then
mini = maxi
anccur = cur + 1
Else
cur2# = (cur - 1) * 12 + 1
Get numero2, cur2#, enr7$
If clerech7$ = enr7$ Then
Get numero2, cur2# + 8, enr4$
recorn = cvl(enr4$)
Get numero, recorn, clerech2$
If clerech$ = clerech2$ Then
trouve = 1
mini = maxi
anccur = cur
Else
If clerech2$ < clerech$ Then
anccur = cur + 1
mini = cur
Else
anccur = cur
maxi = cur
End If
End If
Else
If enr7$ < clerech7$ Then
anccur = cur + 1
mini = cur
Else
anccur = cur
maxi = cur
End If
End If
End If
Wend
End Sub
Sub baselectart(trouve, numero, recorn, aa As String, b$, d$, e$)
'
' sp de lecture d'un enregistrement
'
trouve = 1
Get numero, recorn + 8, e$
donnee(numero, nbre) = recorn
Get numero, cvl(e$), d$
donneea(numero, nbre) = Left$(d$, InStr(d$, Chr$(0)) - 1)
Get numero, recorn + 13, e$
recorn = cvl(e$)
aa = Chr$(0)
While aa <> b$
Get numero, recorn + 12, aa
Get numero, recorn + 8, e$
Get numero, cvl(e$), d$
donneea(numero, Asc(aa)) = Left$(d$, InStr(d$, Chr$(0)) - 1)
donnee(numero, Asc(aa)) = recorn
Get numero, recorn + 13, e$
recorn = cvl(e$)
Wend
recorn = 0
End Sub
Sub closefic(nom$, numero)
'
' sp de fermeture
'
Close numero
For g = 1 To 6
Close numero + g
Next g
End Sub
Sub creaenr(nom$, numero, nbre)
'
' sp de creation les donnees sont dans donneea(numero,)
' les données vides ne sont pas enregistrées
'
Dim place, ancien, ancien2 As Long, recor As enregistrement, aa As enregistrement
mkl0$ = mkl(0)
enr1$ = " "
enr4$ = String$(4, 0)
enr7$ = String$(7, 0)
ancien = 0
ancien2 = 0
place = 0
For g = nbre To 1 Step -1
If donneea(numero, g) <> "" Then
chrg$ = Chr$(g)
Call basechoixindex(numero, enr4$, enr7$, g, clerech7$, clerech$, recorn, numero2, anccur, trouve)
If trouve = 0 Then
cur2 = (anccur - 1) * 12 + 1
place = LOF(numero) + 1
recor.enr = mkl0$ + mkl(place) + mkl(place + 17) + chrg$ + mkl(ancien) + clerech$
Put numero, place, recor.enr
a# = LOF(numero2) - cur2 + 1
If a# <= 4096 Then
pt# = cur2
enr$ = String$(a#, 0)
Get numero2, pt#, enr$
Put numero2, pt# + 12, enr$
Else
pt# = LOF(numero2) - 4096 + 1
enr$ = String$(4096, 0)
While a# <> 0
Get numero2, pt#, enr$
Put numero2, pt# + 12, enr$
a# = a# - 4096
If a# <= 4096 Then
pt# = cur2
enr$ = String$(a#, 0)
Get numero2, pt#, enr$
Put numero2, pt# + 12, enr$
a# = 0
Else
pt# = pt# - 4096
End If
Wend
End If
If g > 8 Then
enr$ = clerech7$ + Chr$(0) + mkl(place + 17)
Else
enr$ = clerech7$ + Chr$(2 ^ (g - 1)) + mkl(place + 17)
End If
Put #numero2, cur2, enr$
Else
place = LOF(numero) + 1
Get numero, recorn - 13, enr4$
recor2# = cvl(enr4$)
enr4$ = mkl(place)
recor.enr = enr4$
Put numero, recor2#, recor.enr
Put numero, recorn - 13, recor.enr
recor.enr = mkl0$ + mkl(recor2#) + mkl(recorn) + chrg$ + mkl(ancien)
Put numero, place, recor.enr
cur2 = (anccur - 1) * 12 + 1
'
' ici on met à jour le code dans l'index pour la recherche séquentielle
'
If g < 9 Then
Get #numero2, cur2 + 7, enr1$
a = Asc(enr1$)
b = 2 ^ (g - 1)
enr1$ = Chr$(a Or b)
Put #numero2, cur2 + 7, enr1$
End If
End If
If ancien2 = 0 Then
ancien2 = place
End If
ancien = place
donnee(numero, g) = place
End If
Next g
If ancien2 <> 0 Then
aa.enr = mkl(ancien)
Put numero, ancien2 + 13, aa.enr
End If
End Sub
Sub lectfic(numero, nbre, trouve)
'
' sp de lecture
' clef compléte
'
enr4$ = String$(4, 0)
enr7$ = String$(7, 0)
Call basechoixindex(numero, enr4$, enr7$, nbre, clerech7$, clerech$, recorn, numero2, anccur, trouve)
If trouve = 1 Then
a$ = " "
b$ = Chr$(nbre)
c$ = " "
While recorn > 0
Get numero, recorn - 5, a$
If a$ = b$ Then
recorn = -recorn
Else
Get numero, recorn - 17, c$
recorn = cvl(c$)
If recorn <> 0 Then
recorn = recorn + 17
End If
End If
Wend
If recorn = 0 Then
trouve = 0
Else
a$ = Chr$(0)
d$ = String$(256, 0)
e$ = " "
recorn = Abs(recorn)
donnee(numero, nbre) = recorn - 17
Get numero, recorn - 4, e$
recorn = cvl(e$)
While a$ <> b$
Get numero, recorn + 12, a$
Get numero, recorn + 8, e$
Get numero, cvl(e$), d$
donneea(numero, Asc(a$)) = Left$(d$, InStr(d$, Chr$(0)) - 1)
donnee(numero, Asc(a$)) = recorn
Get numero, recorn + 13, e$
recorn = cvl(e$)
Wend
End If
End If
End Sub
Sub lectfic2(numero, nbre, trouve)
'
' sp de lecture avec clef incomplete
'
enr4$ = String$(4, 0)
enr7$ = String$(7, 0)
mini = 1
anccur = 1
trouve = 0
clerech$ = donneea(numero, nbre)
clerech2$ = clerech$
l = Len(clerech$)
If l < 7 Then
clerech7$ = clerech$
Else
clerech7$ = Left$(clerech$, 7)
End If
Select Case Asc(clerech$)
Case Is <= 32
numero2 = numero + 1
Case Is <= 64
numero2 = numero + 2
Case Is <= 68
numero2 = numero + 3
Case Is <= 77
numero2 = numero + 4
Case Is <= 82
numero2 = numero + 5
Case Else
numero2 = numero + 6
End Select
maxi = LOF(numero2) / 12
While mini < maxi
cur = Int((maxi - mini) / 2) + mini
If cur <= mini Then
mini = maxi
anccur = cur + 1
Else
cur2 = (cur - 1) * 12 + 1
Get numero2, cur2, enr7$
If clerech7$ = Left$(enr7$, l) Then
Get numero2, cur2 + 8, enr4$
recorn = cvl(enr4$)
Get numero, recorn, clerech2$
If clerech$ = clerech2$ Then
While clerech$ = clerech2$ And cur > 1
cur = cur - 1
cur2 = (cur - 1) * 12 + 1
Get numero2, cur2, enr7$
If clerech7$ = Left$(enr7$, l) Then
Get numero2, cur2 + 8, enr4$
recor2# = cvl(enr4$)
Get numero, recor2#, clerech2$
If clerech$ = clerech2$ Then
recorn = recor2#
End If
Else
clerech2$ = String$(l, Chr$(0))
End If
Wend
trouve = 1
mini = maxi
anccur = cur + 1
Else
If clerech2$ < clerech$ Then
anccur = cur + 1
mini = cur
Else
anccur = cur
maxi = cur
End If
End If
Else
If enr7$ < clerech7$ Then
anccur = cur + 1
mini = cur
Else
anccur = cur
maxi = cur
End If
End If
End If
Wend
If trouve = 1 Then
ok = 0
Else
ok = 1
End If
While ok = 0
If trouve = 1 Then
trouve = 0
a$ = " "
b$ = Chr$(nbre)
c$ = " "
While recorn > 0
Get numero, recorn - 5, a$
If a$ = b$ Then
recorn = -recorn
trouve = 1
Else
Get numero, recorn - 17, c$
recorn = cvl(c$)
If recorn <> 0 Then
recorn = recorn + 17
End If
End If
Wend
If recorn = 0 Then
cur = cur + 1
cur2 = (cur - 1) * 12 + 1
Get numero2, cur2, enr7$
If clerech7$ = Left$(enr7$, l) Then
Get numero2, cur2 + 8, enr4$
recorn = cvl(enr4$)
Get numero, recorn, clerech2$
If clerech$ <> clerech2$ Then ok = 1 Else trouve = 1
Else
ok = 1
End If
Else
a$ = Chr$(0)
d$ = String$(256, 0)
e$ = " "
recorn = Abs(recorn)
Get numero, recorn, d$
donneea(numero, nbre) = Left$(d$, InStr(d$, Chr$(0)) - 1)
donnee(numero, nbre) = recorn - 17
Get numero, recorn - 4, e$
recorn = cvl(e$)
While a$ <> b$
Get numero, recorn + 12, a$
Get numero, recorn + 8, e$
Get numero, cvl(e$), d$
donneea(numero, Asc(a$)) = Left$(d$, InStr(d$, Chr$(0)) - 1)
donnee(numero, Asc(a$)) = recorn
Get numero, recorn + 13, e$
recorn = cvl(e$)
ok = 1
Wend
End If
End If
Wend
End Sub
Sub lectnext(numero, nbre, trouve)
'
' sp de lecture de l enregistrement suivant
' trouve = 9 fin de fichier
' trouve = 1 ok trouve suivant
'
Dim aa As String
finfic = numero + 5
debfic = numero
record# = donnee(numero, nbre)
chr0$ = Chr$(0)
aa = Chr$(0)
b$ = Chr$(nbre)
c2 = 2 ^ (nbre - 1)
e$ = String$(4, 0)
d$ = String$(256, 0)
enr4$ = String$(4, 0)
enr7$ = String$(7, 0)
trouve = 0
a = debfic
x = 8
If record# = 0 Then
numero2 = numero + a
While a <= finfic
x = x + 12
Get #numero2, x, aa
anccur = (x - 8) / 12
If (Asc(aa) And c2) > 0 Or nbre > 8 Then
Get #numero2, x + 1, e$
record# = cvl(e$)
If record# = 0 Then
a = a + 1
numero2 = numero + a
x = 8
If a > finfic Then
trouve = 9
donnee(numero, nbre) = 0
End If
Else
record# = record# - 17
While record# <> 0
Get #numero, record# + 12, aa
If aa = b$ Then
Call baselectart(trouve, numero, record#, aa, b$, d$, e$)
a = numero + 9
Else
Get #numero, record#, e$
record# = cvl(e$)
End If
Wend
End If
End If
Wend
End If
While trouve = 0
If record# = 0 Then
record# = anccur * 12 + 1
anccur = anccur + 1
Get #numero2, record# + 7, aa
Get #numero2, record# + 8, e$
record# = cvl(e$) - 17
While (Asc(aa) And c2) = 0 And nbre < 9 And record# > 0
record# = anccur * 12 + 1
anccur = anccur + 1
Get #numero2, record# + 7, aa
Get #numero2, record# + 8, e$
record# = cvl(e$) - 17
Wend
If record# < 0 Then
numero2 = numero2 + 1
a = numero2 - numero
x = 8
If a > numero + 5 Then
trouve = 9
donnee(numero, nbre) = 0
End If
While a < 7
x = x + 12
Get #numero2, x, aa
If (Asc(aa) And c2) > 0 Or nbre > 8 Then
Get #numero2, x + 1, e$
record# = cvl(e$)
If record# = 0 Then
a = a + 1
numero2 = numero + a
x = 8
If a > numero + 5 Then
trouve = 9
donnee(numero, nbre) = 0
End If
Else
record# = record# - 17
While record# > 0
Get #numero, record# + 12, aa
If aa = b$ Then
Call baselectart(trouve, numero, record#, aa, b$, d$, e$)
a = 9
Else
Get #numero, record#, e$
record# = cvl(e$)
End If
Wend
End If
End If
Wend
Else
Get #numero, record# + 8, e$
donnee(numero, nbre) = record#
Get #numero, cvl(e$), d$
donneea(numero, nbre) = Left$(d$, InStr(d$, Chr$(0)) - 1)
While record# > 0
Get #numero, record# + 12, aa
If aa = b$ Then
Call baselectart(trouve, numero, record#, aa, b$, d$, e$)
Else
Get #numero, record#, e$
record# = cvl(e$)
End If
Wend
End If
Else
Get #numero, record#, e$
record# = cvl(e$)
While record# > 0
Get #numero, record# + 12, aa
If aa = b$ Then
Call baselectart(trouve, numero, record#, aa, b$, d$, e$)
Else
Get #numero, record#, e$
record# = cvl(e$)
End If
Wend
End If
Wend
End Sub
Sub lectprev(numero, nbre, trouve)
'
' sp de lecture de l enregistrement precedant
' trouve = 9 fin de fichier
' trouve = 1 ok trouve precedant
'
Dim aa As String
record# = donnee(numero, nbre)
chr0$ = Chr$(0)
aa = Chr$(0)
b$ = Chr$(nbre)
c2 = 2 ^ (nbre - 1)
e$ = String$(4, 0)
e2$ = String$(4, 0)
d$ = String$(256, 0)
enr4$ = String$(4, 0)
enr7$ = String$(7, 0)
trouve = 0
a = numero + 5
x = LOF(numero + a) - 4
If record# = 0 Then
While a > 1
numero2 = numero + a
anccur = (x - 8) / 12
x = x - 12
Get #numero2, x, aa
If (Asc(aa) And c2) > 0 Or nbre > 8 Then
Get #numero2, x + 1, e$
record# = cvl(e$)
If record# = 0 Then
a = a - 1
numero2 = numero + a
x = LOF(numero2) - 4
If a < numero Then
trouve = 9
donnee(numero, nbre) = 0
End If
Else
record# = cvl(e$) - 13
If record# > 0 Then
Get #numero, record#, e$
record# = cvl(e$)
End If
While record# <> 0
Get #numero, record# + 12, aa
If aa = b$ Then
Call baselectart(trouve, numero, record#, aa, b$, d$, e$)
a = 0
End If
If record# > 0 Then
Get #numero, record# + 4, e$
Get #numero, record# + 8, e2$
If record# + 17 = cvl(e2$) Then
record# = 0
Else
record# = cvl(e$)
End If
End If
Wend
End If
End If
Wend
End If
While trouve = 0
If record# = 0 Then
anccur = anccur - 1
a = numero2 - numero
trouve = 0
record# = (anccur - 2) * 12 + 1
Get #numero2, record# + 7, aa
Get #numero2, record# + 8, e$
record# = cvl(e$) - 13
While (Asc(aa) And c2) = 0 And nbre < 9 And record# > 13
anccur = anccur - 1
record# = (anccur - 2) * 12 + 1
Get #numero2, record# + 7, aa
Get #numero2, record# + 8, e$
record# = cvl(e$) - 13
Wend
If record# > 0 Then
Get #numero, record#, e$
record# = cvl(e$)
End If
If record# < 0 Then
a = a - 1
numero2 = numero + a
If a < 1 Then
trouve = 9
donnee(numero, nbre) = 0
Else
x = LOF(numero + a) - 4
End If
While a > 0
x = x - 12
Get #numero2, x, aa
If (Asc(aa) And c2) > 0 Or nbre > 8 Then
Get #numero2, x + 1, e$
record# = cvl(e$)
If record# = 0 Then
a = a - 1
numero2 = numero + a
x = LOF(numero2) - 4
If a < 1 Then
trouve = 9
donnee(numero, nbre) = 0
End If
Else
record# = record# - 13
If record# > 0 Then
Get #numero, record#, e$
record# = cvl(e$)
End If
While record# > 0
Get #numero, record# + 12, aa
If aa = b$ Then
Call baselectart(trouve, numero, record#, aa, b$, d$, e$)
a = 0
End If
If record# > 0 Then
Get #numero, record# + 4, e$
Get #numero, record# + 8, e2$
If record# + 17 = cvl(e2$) Then
record# = 0
Else
record# = cvl(e$)
End If
End If
Wend
End If
End If
Wend
Else
Get #numero, record# + 8, e$
donnee(numero, nbre) = record#
Get #numero, cvl(e$), d$
donneea(numero, nbre) = Left$(d$, InStr(d$, Chr$(0)) - 1)
While record# > 0
If record# <> 0 Then
Get #numero, record# + 12, aa
If aa = b$ Then
Call baselectart(trouve, numero, record#, aa, b$, d$, e$)
Else
Get #numero, record# + 4, e$
Get #numero, record# + 8, e2$
If record# + 17 = cvl(e2$) Then
record# = 0
Else
record# = cvl(e$)
End If
End If
End If
Wend
End If
Else
While record# > 0
Get #numero, record# + 4, e$
Get #numero, record# + 8, e2$
If record# + 17 = cvl(e2$) Then
record# = 0
Else
record# = cvl(e$)
End If
If record# <> 0 Then
Get #numero, record# + 12, aa
If aa = b$ Then
Call baselectart(trouve, numero, record#, aa, b$, d$, e$)
End If
End If
Wend
End If
Wend
End Sub
Sub openfic(nom$, numero)
'
' sp d ouverture de fichier
'
' la zone indexe est mise dans enra(numero)
'
Open nom$ + ".dat" For Binary As numero
For g = 1 To 6
Open nom$ + "." + Mid$(Str$(g), 2) For Binary As numero + g
Next g
End Sub
Function mkl(chiffre)
'
' sp pour transformer un nombre en 4 caractères
' Note : nombre entier et positif
'
chiffre2 = chiffre
a1$ = Chr(Int(chiffre2 / x1))
chiffre2 = chiffre2 - Asc(a1$) * x1
a2$ = Chr(Int(chiffre2 / x2))
chiffre2 = chiffre2 - Asc(a2$) * x2
a3$ = Chr(Int(chiffre2 / x3))
chiffre2 = chiffre2 - Asc(a3$) * x3
a4$ = Chr(Int(chiffre2))
mkl = a1$ + a2$ + a3$ + a4$
End Function
Function cvl(chiffre$)
'
' sp pour tranformer une chaine de 4 caractères
' en un nombre entier positif
'
cvl = Asc(Left(chiffre$, 1)) * x1 + Asc(Mid(chiffre$, 2, 1)) * x2 + Asc(Mid(chiffre$, 3, 1)) * x3 + Asc(Right(chiffre$, 1))
End Function
Historique
- 17 octobre 2004 09:01:32 :
- Informations complémentaires
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Base de données pour la gestion des E-mail [ par imad8 ]
Je vous demande cheres DBA de m'envoyer la structure classique d'une base de données capable de gérer les boites au lettres d'un grand nombre d'utilis
Gestion de base de données Access [ par Boris88 ]
Je suis débutant et je réalise un jeu en VB. Je doit lire, des données dans une table. Celles-ci sont susceptibles d'être modifiées et doivent ecraser
Base de données avec access [ par xeresakrom ]
Bonjour,Je suis étudiant et l'on me demande de faire un programme de gestion de vidéo club. Le problème est que je n'ai rien compris dans la gestion d
Gestion plantage [ par kat40 ]
Bonjour à tous,J'ai une application VB avec une base de données ACCESS. Lorsque quelqu'un ouvra l'application un 1 va s'inscrire dans la base de donn
gestion d'un base de données [ par hasen ]
Bonjour,Je vais beintot mettre en place une base de données Access qui sera utilisé par plusieurs personnes. Je voudrais savoir s'il est nécessaire de
base de données gestion de stock [ par romeo77 ]
je souhaite mettre en place une bonne de donnée de gestion de stock.si quelqu'un à un bon point de départ à me proposer.
Base de données ciel gestion (devis factures) [ par latchoumanin ]
Bonjour à tous,Voila mon problème:A l'heure actuel j'ai développé une application qui attaque un fichier client et article d'une logiciel de gestion a
gestion de base de données comptable [ par montinin ]
bonjour à tous, voila mon probleme, je travaille sur un projet de developpement d'un moteur sous VB qui gere 2 bases de données l'une comerc
je veux un conseil! [ par j_aub ]
salut ttt le monde,je veux developper une application en vb.net ( sous forme exe et non pas du asp.net), qui permet le gestion des crédits (rembo
Gestion de base de données (compléter, consulter) [ par mikl07 ]
Bonjour,J'ai un problème. J'ai créer plusieur userform (formulaires) pour qui créeent uen base de données automatiquement. tout fonctionne mais mainte
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|