RAD purebasic (speedev)

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

RAD purebasic (speedev)

Message par microdevweb »

Edit le 27/10/2015

SpeeDev est une RAD (Windows Only) pour PureBasic, son utilité est de rendre plus rapide le développement de logiciels de gestion.

Ce projet projet est prévu en 3 phases.
  • Module avant commandes en lignes de code
  • GDI, pour remplacer les lignes de code
  • Exécutable autonome
Le projet est à la phase 1 et permet actuellement ceci
  • Génération de la base de donnée
  • Génération de fenêtre de type table avec
    • Table de la bd (optimisée et de type DataBase ne charge en mémoire que les items visibles)
    • Affichage auto des liaison
    • Champ de recherche sur un champs de la table
    • Icone de filtre, pour filtre sur une table liée
    • Génération automatique des boutons vers la fenêtre fiche
    • Bouton de suppression avec contrôle automatique d'intégrité
  • Génération des fenêtres de type fiche avec
    • Organisation automatique des champs
    • Masque de saisie et d'affichage
    • Contrôle automatique des doublons
    • Contrôle automatique des champs requis
    • Gestion de la sauvegarde, nouveau ou édition automatique
Ce qui est prévut par après ?
  • Fenêtres personnalisée (en cours)
  • Etat imprimé
Ce projet est une somme colossale de travail et va évolué, j'ai donc pris la décision de poster fréquemment les version au fils de l'évolution.


Nouveau:
première version bêta du logiciel GDI
:arrow: Télécharger la le launcher ICI

http://www.microdevweb.com/source/Rad_pb/Launcher.zip

Première installation:

Décompresser et Executer Launcher.exe
Tous sera mis à jour automatiquement après

Vous avez déjà installer via le Launcher

Lancer seulement SpeeDev.exe, les mises à jour se feront automatiquement

Pour tester
  • Lancer SpeeDev.exe
  • Ouvrez le fichier Teste.spd
  • Dans pureBasic créez un nouveau fichier
  • Tapez

    Code : Tout sélectionner

    XIncludeFile "spd.pbi"
  • Créer une fenêtre principal avec l'id comme suit

    Code : Tout sélectionner

    Enumeration Form
          #MainForm
    EndEnumeration
    
  • Depuis le logiciel
    • Cocher l'icone Db
    • Menu Génération du code --> Code de construction de la basse de donnée
    • Retourner dans pureBasic et Ctrl+V pour coller le code
  • Depuis le logiciel
    • Cocher l'icone Window
    • Menu Génération du code --> Code de construction des fenêtre de type table
    • Retourner dans pureBasic et Ctrl+V pour coller le code
  • Dans pure Basic

    Code : Tout sélectionner

    spd::DisplayTableWindow(#localite_Tab)
Ps: Toutes les idées; suggestions; sont bonnes à prendre. :wink:
Dernière modification par microdevweb le dim. 01/nov./2015 17:09, modifié 31 fois.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: RAD purebasic (speedev)

Message par microdevweb »

Code du module

Comme je m'en doutais trop de lignes

Votre message contient 61271 caractères. Le nombre maximal de caractères autorisé est 60000.
Dernière modification par microdevweb le jeu. 01/oct./2015 15:13, modifié 10 fois.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: RAD purebasic (speedev)

Message par microdevweb »

Code de teste avec la version B1.9

Code : Tout sélectionner

XIncludeFile "spd.pbi"
Procedure EmailValidate(value$)
      If value$=""
            ProcedureReturn #True
      EndIf
      If CountString(value$,"@")=1
            ProcedureReturn #True
      EndIf
      MessageRequester("Fiche client","Adresse Email invalide")
      ProcedureReturn #False
EndProcedure   
Procedure TesteValideLink(value$)
      ProcedureReturn #True
EndProcedure
; Initialisation de la base de donnée
spd::InitDb("teste.sqlite")
;-* Ajout de la table Pays
spd::AddTable("pays")
spd::AddItem("pays","nom",spd::#TP_Varchar,30,#True,#True)
;}
;-* Ajout de la table localité
spd::AddTable("localite")
spd::AddItem("localite","code_postal",spd::#TP_Varchar,10,#True,#True)
spd::AddItem("localite","nom",spd::#TP_Varchar,30,#True,#True)
; Liaison entre Localite et pays
; --> Chaque localité à un pays
spd::AddLink("localite","pays")
;}
;-* Ajout de la table Client
spd::AddTable("client")
spd::AddItem("client","nom",spd::#TP_Varchar,30,#True)
spd::AddItem("client","adresse",spd::#TP_Varchar,60,#True)
spd::AddItem("client","telephone",spd::#TP_Varchar,30,#False)
spd::AddItem("client","gsm",spd::#TP_Varchar,30,#False)
spd::AddItem("client","email",spd::#TP_Varchar,100,#False)
; Liaison  client localité
; --> Chaque client à une localité
spd::AddLink("client","localite")
;}
;-* Ajout de la table Fournisseur
spd::AddTable("fournisseur")
spd::AddItem("fournisseur","nom",spd::#TP_Varchar,30,#True)
spd::AddItem("fournisseur","adresse",spd::#TP_Varchar,60,#True)
spd::AddItem("fournisseur","telephone",spd::#TP_Varchar,30,#False)
spd::AddItem("fournisseur","gsm",spd::#TP_Varchar,30,#False)
spd::AddItem("fournisseur","email",spd::#TP_Varchar,100,#False)
; Liaison  fournisseur localité
; --> Chaque client à une localité
spd::AddLink("fournisseur","localite")
;}
;-* Ajout de la table Catégorie
spd::AddTable("categorie")
spd::AddItem("categorie","nom",spd::#TP_Varchar,30,#True,#True)
;}
;-* Ajout de la table TVA
spd::AddTable("tva")
spd::AddItem("tva","taux",spd::#TP_Float)
spd::FixDecimal(2)
;}
;-* Ajout de la table Produit"
spd::AddTable("produit")
spd::AddItem("produit","nom",spd::#TP_Varchar,30,#True,#True)
spd::AddItem("produit","pa",spd::#TP_Float)
spd::FixDecimal(2)
spd::AddItem("produit","pv",spd::#TP_Float)
spd::FixDecimal(2)
; Liaison produit TVA
; --> Chaque produit à un taux de tva
spd::AddLink("produit","tva")
; Liaison produit Catégorie
; --> Chaque produit a une catégorie
spd::AddLink("produit","categorie")
; Liaison produit Fournisseur
; --> Chaque produit a un fournisseur
spd::AddLink("produit","fournisseur")
;}
;-* Ajout de la table Facture
spd::AddTable("facture")
spd::AddItem("facture","numero",spd::#TP_Varchar,20,#True,#True)
spd::AddItem("facture","date",spd::#TP_Date,0,#True)
; Liaison facture Client
; --> Chaque facture a un client
spd::AddLink("facture","client")
;}
;-* Ajout de la table Ligne de facture
spd::AddTable("lgn_facture")
spd::AddItem("lgn_facture","qte",spd::#TP_Integer)
spd::AddItem("lgn_facture","pv",spd::#TP_Float)
spd::FixDecimal(2)
spd::AddItem("lgn_facture","tva",spd::#TP_Float)
spd::FixDecimal(2)
; Liaison ligne de facture produit
; --> Chaque ligne de facture a un produit
spd::AddLink("lgn_facture","produit")
; Liaison ligne de facture facture
; --> Chaque ligne de facture a une facture
spd::AddLink("lgn_facture","facture")
;}
spd::BuildDb()
Enumeration 
      #MainForm
      #PaysTab
      #PaysFic
      #LocaliteTab
      #LocaliteFic
      #ClientTab
      #ClientFic
      #FournisseurTab
      #FournisseurFic
      #TvaTab
      #TvaFic
      #CategorieTab
      #CategorieFic
      #ProduitTab
      #ProduitFic
      #MainMenu
      #FactureForm
      #FactureFic
      
      #M_Pays
      #M_Localite
      #M_Client
      #M_Tva
      #M_Categorie
      #M_Fournisseur
      #M_Produit
      #M_Facture
EndEnumeration
; Teste ajout de 10000000 de record
OpenDatabase(0,"teste.sqlite","","")
; For N=0 To 10000000
;       query$="INSERT INTO pays (nom) VALUES ('"+Str(N)+"')"
;       If DatabaseUpdate(0,query$)=0
;             MessageRequester("Erreur",DatabaseError())
;       EndIf
; ;       Debug query$
; Next
;-* Pays form
; Création de la fenêtre table des pays
spd::CreateTableWindow(#PaysTab,"pays","Liste des pays",400,600,120,30,#PaysFic,#MainForm)
spd::AddColumn("Nom","nom",400)
spd::EnableColumnShearch()
; Création de la fenêtre fiche des pays
spd::CreateSheetWindow(#PaysFic,"pays",180,30,1,"Nouveau pays","Edition d'un pays")
spd::AddStringToSheet("Pays","nom",spd::#Mask_FirstUper)
;}
;-* Localité form
; Création de la fenêtre table des localités
spd::CreateTableWindow(#LocaliteTab,"localite","Liste des localités",600,600,120,30,#LocaliteFic,#MainForm)
spd::AddColumn("Pays","id_pays",195,"nom")
spd::AddColumn("Code postal","code_postal",200)
spd::AddColumn("Localité","nom",200)
spd::EnableColumnShearch()
spd::SetTableFormOrder(#LocaliteTab,"pays.nom,localite.nom ASC")
; Création de la fenêtre fiche des localités
spd::CreateSheetWindow(#LocaliteFic,"localite",180,30,1,"Nouvelle localité","Edition d'une localité")
spd::AddComboLinkToSheet("Pays","id_pays","nom",#True)
spd::AddValidateProcedure(@TesteValideLink())
spd::AddStringToSheet("Code postal","code_postal",spd::#Mask_AllLower)
spd::AddStringToSheet("Localité","nom",spd::#Mask_FirstUper)
;}
;-* Client form
; Création de la fenêtre Table des clients
spd::CreateTableWindow(#ClientTab,"client","Liste des clients",400,600,120,30,#ClientFic,#MainForm)
spd::AddColumn("Localité","id_localite",195,"nom")
spd::EnableColumnFilters("Pas de filtre")
spd::AddColumn("Nom","nom",200)
spd::EnableColumnShearch()
spd::SetTableFormOrder(#ClientTab,"localite.nom,client.nom ASC")
; Création de la fenêtre fiche d'un client
spd::CreateSheetWindow(#ClientFic,"client",280,30,1,"Nouveau client","Edition d'un client")
spd::AddStringToSheet("Nom","nom",spd::#Mask_FirstUper)
spd::AddComboLinkToSheet("Localité","id_localite","nom",#True)
spd::AddStringToSheet("Adresse","adresse")
spd::AddStringToSheet("Téléphone","telephone",spd::#Mask_Phone)
spd::AddStringToSheet("Gsm","gsm",spd::#Mask_Phone)
spd::AddStringToSheet("Email","email")
spd::AddValidateProcedure(@EmailValidate())
;}
;-* Tva form
; Création de la fenêtre Table des taux de tva
spd::CreateTableWindow(#TvaTab,"tva","Liste des taux de TVA",180,600,120,30,#TvaFic,#MainForm)
spd::AddColumn("Taux de TVA","taux",175)
spd::FixExtend(" %")
spd::SetColumnAlign(spd::#A_Right)
spd::SetTableFormOrder(#TvaTab,"taux ASC")
; Création de la fenêtre fiche d'un taux de tva
spd::CreateSheetWindow(#TvaFic,"tva",180,30,1,"Nouveau Taux de TVA","Edition d'un Taux de Tva")
spd::AddStringToSheet("Taux","taux",spd::#Mask_Number,2," %")
;}
;-* Catégorie form
; Création de la fenêtre Table des catégories
spd::CreateTableWindow(#CategorieTab,"categorie","Liste des catégories",220,600,120,30,#CategorieFic,#MainForm)
spd::AddColumn("Catégorie","nom",215)
spd::EnableColumnShearch()
spd::SetTableFormOrder(#CategorieTab,"categorie.nom ASC")
; Création de la fenêtre fiche d'une catégorie
spd::CreateSheetWindow(#CategorieFic,"categorie",180,30,1,"Nouvelle catégorie","Edition d'une catégorie")
spd::AddStringToSheet("Catégorie","nom")
;}
;-* Fournisseur form
; Création de la fenêtre Table des fournisseurs
spd::CreateTableWindow(#FournisseurTab,"fournisseur","Liste des fournisseurs",400,600,120,30,#FournisseurFic,#MainForm)
spd::AddColumn("Localité","id_localite",195,"nom")
spd::AddColumn("Nom","nom",200)
spd::EnableColumnShearch()
spd::SetTableFormOrder(#FournisseurTab,"localite.nom,fournisseur.nom ASC")
; Création de la fenêtre fiche d'un fournisseur
spd::CreateSheetWindow(#FournisseurFic,"fournisseur",280,30,1,"Nouveau fournisseur","Edition d'un fournisseur")
spd::AddStringToSheet("Nom","nom",spd::#Mask_FirstUper)
spd::AddComboLinkToSheet("Localité","id_localite","nom",#True)
spd::AddStringToSheet("Adresse","adresse")
spd::AddStringToSheet("Téléphone","telephone",spd::#Mask_Phone)
spd::AddStringToSheet("Gsm","gsm",spd::#Mask_Phone)
spd::AddStringToSheet("Email","email")
spd::AddValidateProcedure(@EmailValidate())
;}
;-* Produit form
; Création de la fenêtre Table des produits
spd::CreateTableWindow(#ProduitTab,"produit","Liste des produits",600,600,120,30,#ProduitFic,#MainForm)
spd::AddColumn("Fournisseur","id_fournisseur",200,"nom")
spd::EnableColumnFilters("Pas de filtre")
spd::AddColumn("Catégorie","id_categorie",200,"nom")
spd::EnableColumnFilters("Pas de filtre")
spd::AddColumn("Nom","nom",200)
; spd::SetTableFormOrder(#ProduitTab,"produit.nom ASC")
spd::EnableColumnShearch()
;Création de la fenêtre fiche d'un Produit
spd::CreateSheetWindow(#ProduitFic,"produit",180,30,2,"Nouveau produit","Edition d'un produit")
spd::AddComboLinkToSheet("Catégorie","id_categorie","nom",#True)
spd::AddStringToSheet("Nom","nom")
spd::AddStringToSheet("Prix d'achat","pa",spd::#Mask_Number,2," "+Chr(128))
spd::AddStringToSheet("Prix de vente","pv",spd::#Mask_Number,2," "+Chr(128))
spd::AddComboLinkToSheet("Tva","id_tva","taux",#True)
spd::AddComboLinkToSheet("Fournisseur","id_fournisseur","nom",#True)
;}
;-* Facture Form Visualisation
Procedure EventNewFacture()
      Debug "ok"
EndProcedure
Procedure$ CalculTotalFacture(IdFacture)
      Protected query$,Db,Total.f
      Db=OpenDatabase(#PB_Any,"teste.sqlite","","")
      If Db=0
            MessageRequester("Erreur Data base","Impossible d'ouvrir la base de donnée")
            ProcedureReturn 
      EndIf
      query$="SELECT qte,pv,tva FROM lgn_facture WHERE id_facture="+Str(IdFacture)
      If DatabaseQuery(Db,query$)=0
            MessageRequester("Erreur Data base",DatabaseError())
            ProcedureReturn 
      EndIf
      While NextDatabaseRow(Db)
            Total+((GetDatabaseLong(Db,0) * GetDatabaseFloat(Db,1)) * (1+(GetDatabaseFloat(Db,2)/100)))
      Wend
      FinishDatabaseQuery(Db)
      CloseDatabase(Db)
      ProcedureReturn StrF(Total,2)
EndProcedure
Procedure$ CalculPrixHt(IdLgn) 
       Protected query$,Db,Total.f
      Db=OpenDatabase(#PB_Any,"teste.sqlite","","")
      If Db=0
            MessageRequester("Erreur Data base","Impossible d'ouvrir la base de donnée")
            ProcedureReturn 
      EndIf
      query$="SELECT qte,pv,tva FROM lgn_facture WHERE id="+Str(IdLgn)
      If DatabaseQuery(Db,query$)=0
            MessageRequester("Erreur Data base",DatabaseError())
            ProcedureReturn 
      EndIf
      While NextDatabaseRow(Db)
            Total+(GetDatabaseLong(Db,0) * GetDatabaseFloat(Db,1)) 
      Wend
      FinishDatabaseQuery(Db)
      CloseDatabase(Db)
      ProcedureReturn StrF(Total,2)
EndProcedure
Procedure$ CalculPrixTTC(IdLgn) 
       Protected query$,Db,Total.f
      Db=OpenDatabase(#PB_Any,"teste.sqlite","","")
      If Db=0
            MessageRequester("Erreur Data base","Impossible d'ouvrir la base de donnée")
            ProcedureReturn 
      EndIf
      query$="SELECT qte,pv,tva FROM lgn_facture WHERE id="+Str(IdLgn)
      If DatabaseQuery(Db,query$)=0
            MessageRequester("Erreur Data base",DatabaseError())
            ProcedureReturn 
      EndIf
      While NextDatabaseRow(Db)
            Total+((GetDatabaseLong(Db,0) * GetDatabaseFloat(Db,1)) * (1+(GetDatabaseFloat(Db,2)/100)))
      Wend
      FinishDatabaseQuery(Db)
      CloseDatabase(Db)
      ProcedureReturn StrF(Total,2)
EndProcedure
Procedure EventSelectFacture(Id_facture)
      spd::FreeFilters(#FactureForm,1)
      spd::AddFilters(#FactureForm,1,"lgn_facture.id_facture="+Str(Id_facture))
;       spd::RefreshTable(#FactureForm,0)
      spd::RefreshTable(#FactureForm,1)
EndProcedure
spd::CreateCustomForm(#FactureForm,0,0,800,700,"Liste des factures",#MainForm)
spd::AddCustomTable(#FactureForm,"facture",10,10,-1,300,"Liste des factures",100)
spd::SetEventSelectCallback(@EventSelectFacture())
spd::AddCustomColumn("Date","date",190)
spd::AddCustomColumn("Client","id_client",300,"nom")
spd::EnableColumnFilters("Pas de filtre")
spd::AddCustomColumn("Total facture","",200)
spd::SetColumnAlign(spd::#A_Right)
spd::FixExtend(" "+Chr(128))
spd::SetMemorisCalculateProcedure(@CalculTotalFacture())
spd::AddCustomTable(#FactureForm,"lgn_facture",10,320,-1,370,"Détaille de la facture",100)
spd::AddCustomColumn("Qte","qte",80)
spd::SetColumnAlign(spd::#A_Right)
spd::AddCustomColumn("Produit","id_produit",190,"nom")
spd::AddCustomColumn("Prix HT","pv",100)
spd::FixExtend(" "+Chr(128))
spd::SetColumnAlign(spd::#A_Right)
spd::AddCustomColumn("Taux Tva","tva",100)
spd::FixExtend(" "+Chr(37))
spd::SetColumnAlign(spd::#A_Right)
spd::AddCustomColumn("Total HT","",100)
spd::SetColumnAlign(spd::#A_Right)
spd::SetMemorisCalculateProcedure(@CalculPrixHt())
spd::FixExtend(" "+Chr(128))
spd::AddCustomColumn("Total TTC","",120)
spd::SetColumnAlign(spd::#A_Right)
spd::FixExtend(" "+Chr(128))
spd::SetMemorisCalculateProcedure(@CalculPrixTTC())
spd::AddCustomButton("Nouveau",800-90,10,80,30,@EventNewFacture())
;}
;-* Facture Fiche

;}
Procedure Exit()
      End
EndProcedure
Procedure OpenPays()
      spd::DisplayTableWindow(#PaysTab)
EndProcedure
Procedure OpenLocalite()
      spd::DisplayTableWindow(#LocaliteTab)
EndProcedure
Procedure OpenClient()
      spd::DisplayTableWindow(#ClientTab)
EndProcedure
Procedure OpenTva()
      spd::DisplayTableWindow(#TvaTab)
EndProcedure
Procedure OpenCategorie()
      spd::DisplayTableWindow(#CategorieTab)
EndProcedure
Procedure OpenFournisseur()
      spd::DisplayTableWindow(#FournisseurTab)
EndProcedure
Procedure OpenProduit()
      spd::DisplayTableWindow(#ProduitTab)
EndProcedure
Procedure OpenFacture()
      spd::DisplayCustomForm(#FactureForm)
EndProcedure
OpenWindow(#MainForm,0,0,800,600,"Teste Speed Dev",#PB_Window_Maximize|#PB_Window_SystemMenu)
BindEvent(#PB_Event_CloseWindow,@Exit(),#MainForm)
CreateMenu(#MainMenu,WindowID(#MainForm))
MenuTitle("Fichiers annexes")
MenuItem(#M_Pays,"Pays")
MenuItem(#M_Localite,"Localité")
MenuItem(#M_Tva,"Taux de TVA")
MenuItem(#M_Categorie,"Catégorie de produits")
MenuTitle("Fichiers principales")
MenuItem(#M_Client,"Clients")
MenuItem(#M_Fournisseur,"Fournisseurs")
MenuItem(#M_Produit,"Produits")
MenuItem(#M_Facture,"Factures")
BindMenuEvent(#MainMenu,#M_Pays,@OpenPays())
BindMenuEvent(#MainMenu,#M_Localite,@OpenLocalite())
BindMenuEvent(#MainMenu,#M_Client,@OpenClient())
BindMenuEvent(#MainMenu,#M_Tva,@OpenTva())
BindMenuEvent(#MainMenu,#M_Categorie,@OpenCategorie())
BindMenuEvent(#MainMenu,#M_Fournisseur,@OpenFournisseur())
BindMenuEvent(#MainMenu,#M_Produit,@OpenProduit())
BindMenuEvent(#MainMenu,#M_Facture,@OpenFacture())
Repeat:WaitWindowEvent():ForEver

Dernière modification par microdevweb le mar. 13/oct./2015 11:27, modifié 9 fois.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: RAD purebasic (speedev)

Message par Kwai chang caine »

Un RAD à toi tout seul !! 8O

Ca a l'air de fonctionner, en tout cas y'a déjà une sacré tartiné de code 8)
Je ne connais pas WINDEV, bien que je l'ai téléchargé et même pas compris comment démarrer, mais si je me base sur celui de VB6, c'est un bouleau de dingue.
Je suis en admiration devant ton projet et te souhaire de le mener à bout, ce qui malheureusement on le sait tous est le plus dur à faire.
Alors bon courage et merci beaucoup aussi surtout pour ton partage 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: RAD purebasic (speedev)

Message par celtic88 »

Wow 8O il ma fallu 1 heure pour comprendre ce code :(
merci microdevweb.
.....i Love Pb :)
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: RAD purebasic (speedev)

Message par microdevweb »

Nouvelle version, fenêtre fiche
  • Gestion doublon OK
  • Gestion champ obligatoire OK
Actuellement ne fonctionne que pour le fichier Pays de l'exemple... (il reste beaucoup de travaille)
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: RAD purebasic (speedev)

Message par microdevweb »

Nouvelle version 0.3

Edition d'un record
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: RAD purebasic (speedev)

Message par microdevweb »

Version 0.4

Suppression d'un record, avec gestion d'intégrité
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: RAD purebasic (speedev)

Message par microdevweb »

version 0.5

Ajout d'une combo liaison, et d'un bouton qui ouvre la fenêtre tab du fichier associé. NOTE: La sélection dans la fenêtre Tab du fichier associé fonctionne, l'ajout l'édit (dans la même fenètre) Bug actuellement. Cela deviens évidement complexe... Mais cela avance
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: RAD purebasic (speedev)

Message par microdevweb »

Version 0.6

Les liaison fonctionne, vous pouvez ajouté un combo box de liaison avec ou sans bouton de sélection. Avec le bouton vous pouvez ouvrir la fenêtre Table associée, ajouté, modifier, supprimer un record du fichier associé et le sélectionner directement dans la table

Dans le code exemple, il existe un fichier Pays, et un fichier localité qu'il à une liaison avec le pays tout cela est géré automatiquement
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: RAD purebasic (speedev)

Message par microdevweb »

Version 0.7 Correction de quelque bugs, gestion des clients dans l'exemple
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: RAD purebasic (speedev)

Message par microdevweb »

Nouvelle version 0.8

Code : Tout sélectionner

 Declare SetTableFormOrder(Id_Window,OrderClause$)
      ; Poste un ordre de lecture Sql
      ; Id_Window --> L'identifiant de la fenêtre
      ; OrderClause$ --> L'ordre de tri qui doit être comme suit
      ; ------------------> Nom_table.item  'séparé par des virgules
      ; -------------------> + ASC  ou DESC
      ;-------------------> ATTENTION Nom_table peut être la table liée
Sélection dans une table étrangère par double clique
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: RAD purebasic (speedev)

Message par microdevweb »

Nouvelle version 0.9

Code : Tout sélectionner

Declare AddValidateProcedure(*CallBackProcedure)
      ; Ajoute une procédure de validation
      ; ATTENTION doit être appelé après AddStringToSheet ou AddComboLinkToSheet
      ; La procedure doit être définie comme suit Procedure(values$)
      ; Avec AddStringToSheet values$ = à la valueur du champ
      ; Avec AddComboLinkToSheet values$=Id de la table liée au format String, vous devez donc le convertir en Integer
      ; ---> Elle doit retourné un booléen #True pour passé le teste ou #False pour arrêter la sauvegarde
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: RAD purebasic (speedev)

Message par microdevweb »

Nouvelle version 1.0

On peut fixer un nombre de décimal pour l'affichage. On peut fixer une extension pour l'affichage des tables ex: %

Nb: Ce projet ne suscitant pas trop d'intérêt, et le code risquant d'être trop important pour pouvoir être publier directement dans le poste je n'éditerais plus le post. Seul le Zip sera mise à jour.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Bernard
Messages : 23
Inscription : jeu. 22/janv./2004 8:56
Localisation : Le MANS (72)

Re: RAD purebasic (speedev)

Message par Bernard »

Bonjour,

Moi je suis l'évolution, je trouve ce projet très intéressant je travaillais jusqu’à maintenant avec Access, je trouvais trop compliquer la mise en œuvre avec plusieurs tables avec des relations dans une même base.

Bon courage
Bernard
Répondre