Réseau inactif... Pourquoi??

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Réseau inactif... Pourquoi??

Message par omega »

Bonsoir,

J'ai testé un petit programme avant d'installer le gros programme que j'ai développé pour un patron d'usine qui a exigé l'installation d'un réseau. Personnellement, je n'ai jamais installé un réseau mais j'ai (exploité) des logiciels en réseau.

J'ai donc 2 PC distants de ... environ 50 mètres. J'ai installé mon petit logiciel-test sur les 2 pc. J'utilise une base de données sqlite (pour tester bien sûr car c'est la lecture et l'écriture sur des tables qui m'intéresse sous réseau.). Je m'attendais à TOUT sauf à ça: Le programme se comporte comme s'il n'y a aucun réseau installé... Pourquoi ? Dois-je configurer quelque chose pour dire à purebasic que j'utilise un réseau??

Merci beaucoup...

Code : Tout sélectionner


;J'ouvre ma base de données
OuvrirMaBase()       

;Un test m'a permis de savoir que ma base a été ouverte normalement sans erreur 
Wsql.s="Select * FROM TableClient WHERE Ville=" + chr(34) + "RENNES" + chr(34) 
CheckDataBaseQuery(0,Wsql)
While NextDataBaseRow(0)
     NomClient$=GetDataBaseString(0,1)
     Debug NomClient$
Wend
End

; Il m'affiche 5 clients (alors que j'ai créé 10 clients de Rennes dans l'autre PC)...
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

Re: Réseau inactif... Pourquoi??

Message par Atlante »

Tu n'auras pas de réponse sans plus de code et ta base par exemple.
Nous ne sommes pas devin : OuvrirMaBase() ...
cdt

Atlante
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Réseau inactif... Pourquoi??

Message par falsam »

Bonjour omega. Tu ne fournis pas le code de la procédure OuvrirMaBase() mais je pense que tu oublies d'indiquer le chemin d’accès à ta base SQLite. le résultat est que tu as du créer une base sur chacun des postes.

D'un point de vue pratique, installe l’exécutable et ta base sur le même PC (Un serveur serait l'idéal) dans un dossier partageable par l'ensemble du réseau. Sur chacun des postes tu dois affecter une lettre de lecteur à ce dossier partagé.

L'idéal serait que tu utilises une base de donnée PostgreSQL ou Mysql. Tu aurais pu dans ce cas installer un serveur accessible par une adresse IP depuis ton code.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Re: Réseau inactif... Pourquoi??

Message par Golfy »

1) ouvrir une commande DOS (menu 'Démarrer', 'Exécuter...' taper "cmd")
2) taper "ipconfig" pour connaitre l'adresse IP du PC
3) taper "ping @IP-de-l-autre-PC"

à partir de là, il y a des réponses au ping, il faut regarder du coté de ton programme (y compris si tu ouvres ta base via un lien réseau... normalement, tu dois utiliser les commandes de purebasic de type 'sendnetworkdata'...)

Après il y a des exceptions : un parefeu entre les deux, du routage (regarder les adresses de passerelles, tester avec 'tracert'), etc.

Puis tu peux poster le code ici pour permettre aux spécialistes de t'aider sur son fonctionnement (soit un COPIER/COLLER entre les balises [ Code]xxx[ /Code], soit un fichier zip que tu as placé sur un serveur FTP, ou sur un DL de Free)
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Réseau inactif... Pourquoi??

Message par omega »

Ok vous avez raison, je vais afficher une partie du code pour plus de conviction:

Code : Tout sélectionner


;Variables globales communes
Global WSql.s,Wstring$,LastItem$,ErrorFound,WMsg$,wPanel,wCoul
Global UserName$,wAd$,wRC$,wMf$,waRt$,wRib$,wTel$,wLogo$
Global WDest$,wSource$,DataPath$,wOpenEXE,wMntL$
Global wAdUser$,wTelUser$,wRCUser$,wMfUser$,WARTUser$,WRibUser$
Global wMagSEL$,wFourSEL$,wClientSEL$,wFamSEL$,wProvSEL$,wDestSEL$,wCodeFourSEL,wCodeClientSEL
Global wCheck_Mag,wCheck_Four,wCheck_Client,wCheck_Prov,wCheck_Dest,wCheck_Fam
Global wTotQte.q,wTotMnt.q,wNumBon,wCF$,wVer$,wNumBon$

;Identificateurs bases de données
Global IdProd,IdClient,IdFour,IdFam,IdMag,IdStockMP,IdStockPF,IdUm,IdPar
Global IdBeMp,IdBeMpCum,IdTypeMvt,IdVerClient,IdVerFour
Global IdBsMp,IdBsMpCum,IdDest,IdBePf,IdBePfCum,IdBsPf,IdBsPfCum,IdProv,IdFs
Global IdTmpFicheClient,IdTmpFicheFour,IdTmpSoldeGlobal,IdCheq,IdBank,IdMvtBank
Global IdBrs,IdTempoProd,IdInv,IdTempoSolde,IdTempoCF
Global IdBL,IdCumBL,IdCumBr,IdFac,IdCumFac,IdVerR,IdVerE,IdProf,IdCumProf
Global IdFicheS,IdTempoStockCF,IdSolde

;Variables de travail
Global wVerBank.q,wVerBank$,wTotVerBank.q,wTotVerBank$,wNumRecu$
Global WMag$,wTypeMvt$,wTypeProd$,WDes$,WDest$,wProv$,WCode,Wum$,Wfam$,Wpv$,wPr$,wQi$,wVi$,wVi.q
Global WQeBr.q,wQeBrs.q,wQsBrs.q,wQsC.q,wQsV.q,wQf.q,wPmp.q
Global WQeBr$,wQeBrs$,wQsBrs$,wQsC$,wQsV$,wQf$,wPmp$
Global WQe.q,wQs.q,wQi.q,wValeur.q,wValeur$,wFamSEL$,wBank$,WTypeDep$,wNumCpte$,WTypeOp$,WNumRecu$
Global WQe$,wQs$,wPas.d,wval,wvB.d
Global wTotVerEsp.q,wTotVerCheq.q,WTotVer.q,wTotDebit.q,wTotCredit.q,wTotDebit$,wTotCredit$
Global wCodeFour,wCodeClient,wFour$,wClient$,wCodeProd

;Variables imprimantes
Global WPu$,wPu.q,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,wpos
Global L1,L2,L3,L4,L5,L6,Lfin,wTypePrinter$,wDpsPrinte$,wLarPrinter$,wHautPrinter$
Global wtaille,wTaille1,wTaille2,wTaille3,wTaille4,wTaille5,wTaille6,wTaille7,wTaille8

;Propre à la gestion
Global wCode,wNom$,wAd$,WRc$,wMf$,wArt$,wRib$,wSi$,Wcreance$,wDette$,wVerR$,wVerE$,wNewSolde$,Wsolde$
Global wSi.d,WCreance.d,wDette.d,WVerR.d,wVerE.d,WNewSolde.d,WSolde.q
Global wCodeBL,wCodeBr,wNumdoc$,wDate$,wDateNum$,wQte$,wPu$,wMnt$
Global wNumdoc,wDateNum,wQte.q,wPu.q,wMnt.q
Global wNumBc$,wDocSource$,wHT$,wFrais$,wRemise$,wTTC$,wVerEsp$,wVerCheq$,wRefCheq$,wObs$
Global wHT.q,wFrais.q,wRemise.q,wTTC.q,wVerEsp.q,wVerCheq.q,wRefCheq.q,wObs.q
Global WStock$,Wstock.q
Global wCodeFac,wTauxTva$,wTaux.q,WTva$,Wtva.q,WTimbre$,WTimbre.q
Global wCheckTimbre,wCheckTva
Global wCodeVer,WVerseur$
Global wQteE.q,wQteS.q,wQteE$,wQteS$
Global Wtot.q, WtotEsp.q,WTotCheq.q,WTotG.q
Global WQte$,Wqte.q,Wmnt.q,Wmnt$,WUm$
Global wCodeCon
Global WtotE.q, WtotS.q,WTotE$,wTotS$
Global WtotHT.q,WtotFrais.q,WtotRemise.q,WtotTtc.q,WtotVerEsp.q,WtotVerCheq.q
Global WtotHT$,WtotFrais$,WtotRemise$,WtotTtc$,WtotVerEsp$,WtotVerCheq$
Global WtotTimbre$,WtotTva$,WtotTimbre.q,WtotTva.q
Global wCheckEsp,wCheckCheq,wCheckAll,WCheckInit
Global WQteC.q,wQteP.q,wQteC$,wQteP$,WEcart.q,WEcart$
Global wCheckQteC,wCheckQteP,wCheckStockNul,wCheckEcart
Global WDoc$,Wlib$,WDebit$,WCredit$,Wsolde$,WDebit.q,WCredit.q,WSolde.q,wAncienSolde.q,wAncienSolde$
Global WtotSi.q,WtotCreance.q,WtotDette.q,WtotVerR.q,WtotVerE.q,WtotSolde.q
Global WtotSi$,WtotCreance$,WtotDette$,WtotVerR$,WtotVerE$,WtotSolde$

;Les tableaux
Global Dim ListMois$(12),Dim wCar$(30),Dim wCase$(14,1000),u,wCol,wRow
Global Dim wBankName$(10),Dim wBankCpte$(10),Dim wBankSi$(10),Dim wBankSolde$(10)

;Formatage date et heure
Global wDateDebut,wDateFin,wDateDebut$,wDateFin$,wDateLue,wDebut,WFin,wDateNum,wDateNum$
Global wJour,wMois,wyear
Global Z,K$,wNumFiche$,WEntete,wNumFiche
Global WLib$ ,WLigne,WFound

;------------- Progres bar -----------------
Global WMaxi,WPv,wNum,wMax

;Varibales de fermeture des fenêtres 
Global wQuitWinUpd,wQuitWinJLd,wQuitWinTab,wQuitWinSolde,wQuitWinCaisse,wQuitWinInv,wQuitWinJlc
Global wQuitWinJlc,wQuitWinInvStock,wQuitMarge

;Bilan comptable et fiscal 
Global IdCaisse,wDep.q,wRec.q,wDep$,wRec$,wTotDep$,wTotRec$,wTotDep.q,wTotRec.q,wMotif$,IdBilanCF
Global IdJdCaisse,IdJCheq,WCheqE$,WCheqR$,WTotE.q,WTotR.q,WTotE$,WTotR$,WNbreE,WNbreR
Global IdMarge,WValeurA.q,wValeurV.q,WValeurA$,wValeurV$
Global IdBilanV,WBilValStock.q,WBilValBL.q,WBilValBR.q,WBilValCon.q,WBilValFV.q,WBilValFS.q
Global WBilDepCaisse.q,WBilRecCaisse.q,WBilSoldeCaisse.q,WBilVerE.q,WBilVerR.q,WBilMarge.q,WCreanceDette.q

;Options 
Global wCheckAllTables,WCheckmCaisse
Global wStockNeg,wMajStockBR,wMajStockBL,wMajStockFv,wStockAlerte,wSoldeAlerte,wCfDouteux
Global wPayEspBR,wPayEspBL,wPayEspFv,wPayCheqBR,wPayCheqBL,wPayCheqFv,wPayTermeBR,wPayTermeBL,wPayTermeFv
Global IdParGes,wNdQte$,wNdMnt$,wNdQte,wNdMnt

;Montants en lettres
Global Dim Wnbre$(100),wMilliard$,wMillion$,wMillier$,wCentaine$

;------------------------------Bases de données ---------------------------------------------------------------
UseSQLiteDatabase()

Procedure CheckDatabaseUpdate(Database, Query$)
   Result = DatabaseUpdate(Database, Query$)
   If Result = 0
      Debug DatabaseError() + "    Ligne " +  Str(wLigne)
   EndIf
   
   ProcedureReturn Result
EndProcedure

;----------------------------------------------------------------------------------------------------------
Procedure CheckDatabaseQuery(Database, Query$)
   Define Resultat
   Resultat = DatabaseQuery(Database, Query$)
   If Resultat = 0
      Debug DatabaseError() + "    Ligne " +  Str(wLigne)
   EndIf
   
   ProcedureReturn Resultat
EndProcedure

;---------------------------- Res. imprimante xcm ---------------------------------------------------------------
Procedure xcm(x.f)

result = x * (PrinterPageWidth()/21) ; 21cm A4
ProcedureReturn result

EndProcedure

;---------------------------- Res. imprimante ycm ---------------------------------------------------------------
Procedure ycm(x.f)

result = x * (PrinterPageWidth()/29.7) ; 29,7cm A4
ProcedureReturn result

EndProcedure

;---------------------------------- Test si image valide ----------------------------------------------------------
Procedure ImageFile(wFile$)
If UCase(GetExtensionPart(wFile$))<>"JPG" And UCase(GetExtensionPart(wFile$))<>"GIF" And UCase(GetExtensionPart(wFile$))<>"PNG" And UCase(GetExtensionPart(wFile$))<>"BMP" And UCase(GetExtensionPart(wFile$))<>"JPEG" 
   result =0
Else
   result = 1
EndIf
ProcedureReturn result

EndProcedure

;------------------------------ Open base de données ------------------------------------------------------------------

IdFam=0
Dbs$ = "Data\DbFam.sqlite"
If Not OpenDatabase(IdFam, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdProd=1
Dbs$ = "Data\DbProd.sqlite"
If Not OpenDatabase(IdProd, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdClient=2
Dbs$ = "Data\DbClient.sqlite"
If Not OpenDatabase(IdClient, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdFour=3
Dbs$ = "Data\DbFour.sqlite"
If Not OpenDatabase(IdFour, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdStockMP=4
Dbs$ = "Data\DbStockMP.sqlite"
If Not OpenDatabase(IdStockMP, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdStockPF=5
Dbs$ = "Data\DbStockPF.sqlite"
If Not OpenDatabase(IdStockPF, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdMag=6
Dbs$ = "Data\DbMag.sqlite"
If Not OpenDatabase(IdMag, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdBeMp=7
Dbs$ = "Data\DbBeMp.sqlite"
If Not OpenDatabase(IdBeMp, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdBeMpCum=8
Dbs$ = "Data\DbBeMpCum.sqlite"
If Not OpenDatabase(IdBeMpCum, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdVerClient=9
Dbs$ = "Data\DbVerClient.sqlite"
If Not OpenDatabase(IdVerClient, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdVerFour=10
Dbs$ = "Data\DbVerFour.sqlite"
If Not OpenDatabase(IdVerFour, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdDest=11
Dbs$ = "Data\DbDest.sqlite"
If Not OpenDatabase(IdDest, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdBsMp=12
Dbs$ = "Data\DbBsMp.sqlite"
If Not OpenDatabase(IdBsMp, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdBsMpCum=13
Dbs$ = "Data\DbBsMpCum.sqlite"
If Not OpenDatabase(IdBsMpCum, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdBePF=14
Dbs$ = "Data\DbBePF.sqlite"
If Not OpenDatabase(IdBePF, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdBePFCum=15
Dbs$ = "Data\DbBePFCum.sqlite"
If Not OpenDatabase(IdBePFCum, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdProv=16
Dbs$ = "Data\DbProv.sqlite"
If Not OpenDatabase(IdProv, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdBsPF=17
Dbs$ = "Data\DbBsPF.sqlite"
If Not OpenDatabase(IdBsPF, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdBsPFCum=18
Dbs$ = "Data\DbBsPFCum.sqlite"
If Not OpenDatabase(IdBsPFCum, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!" + "IdBsPFCum")
   End
EndIf

IdFs=19
Dbs$ = "Data\DbFs.sqlite"
If Not OpenDatabase(IdFs, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!" + "IdBsPFCum")
   End
EndIf

IdBank=20
Dbs$ = "Data\DbBank.sqlite"
If Not OpenDatabase(IdBank, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdMvtBank=21
Dbs$ = "Data\DbMvtBank.sqlite"
If Not OpenDatabase(IdMvtBank, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdFac=22
Dbs$ = "Data\DbTFac.sqlite"
If Not OpenDatabase(IdFac, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdCumFac=23
Dbs$ = "Data\DbTCumFac.sqlite"
If Not OpenDatabase(IdCumFac, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdVerE=24
Dbs$ = "Data\DbTVerE.sqlite"
If Not OpenDatabase(IdVerE, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdBrs=25
Dbs$ = "Data\DbBrs.sqlite"
If Not OpenDatabase(IdBrs, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf


IdFicheS=26
Dbs$ = "Data\DbFicheS.sqlite"
If Not OpenDatabase(IdFicheS, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdTmpFicheClient=27
Dbs$ = "Data\DbTmpFicheClient.sqlite"
If Not OpenDatabase(IdTmpFicheClient, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdInv=28
Dbs$ = "Data\DbInv.sqlite"
If Not OpenDatabase(IdInv, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdTmpFicheFour=29
Dbs$ = "Data\DbTmpFicheFour.sqlite"
If Not OpenDatabase(IdTmpFicheFour, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdTmpSoldeGlobal=30
Dbs$ = "Data\DbTmpSoldeGlobal.sqlite"
If Not OpenDatabase(IdTmpSoldeGlobal, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdSolde=31
Dbs$ = "Data\DbTSolde.sqlite"
If Not OpenDatabase(IdSolde, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdCaisse=32
Dbs$ = "Data\DbCaisse.sqlite"
If Not OpenDatabase(IdCaisse, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdJdCaisse=33
Dbs$ = "Data\DbJdCaisse.sqlite"
If Not OpenDatabase(IdJdCaisse, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdJCheq=34
Dbs$ = "Data\DbJcheq.sqlite"
If Not OpenDatabase(IdJcheq, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdMarge=35
Dbs$ = "Data\DbMarge.sqlite"
If Not OpenDatabase(IdMarge, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdCheq=36
Dbs$ = "Data\DbCheq.sqlite"
If Not OpenDatabase(IdCheq, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdBilanCF=37
Dbs$ = "Data\DbBilanCF.sqlite"
If Not OpenDatabase(IdBilanCF, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdProf=38
Dbs$ = "Data\DbTProf.sqlite"
If Not OpenDatabase(IdProf, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdCumProf=39
Dbs$ = "Data\DbTCumProf.sqlite"
If Not OpenDatabase(IdCumProf, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdTempoCF=40
Dbs$ = "Data\DbTempoCF.sqlite"
If Not OpenDatabase(IdTempoCF, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdCumBr=41
Dbs$ = "Data\DbTCumBr.sqlite"
If Not OpenDatabase(IdCumBR, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdParGes=42
Dbs$ = "Data\DbParGes.sqlite"
If Not OpenDatabase(IdParGes, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

IdPar=43
Dbs$ = "Data\Dbparam.sqlite"
If Not OpenDatabase(IdPar, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf

;-------------------------------- Conversion Entier cm en nbre  Décimal  (ex: 14300 devient 143.00 ) ---------------------
Procedure Convertir_En_D()
;Enlever les espaces des milliers
WNew$=""
Wstring$=Trim(wString$)
For i=1 To Len(Wstring$)
    WVal$=Mid(Wstring$,i,1)
    If WVal$<>"" And WVal$<>"." And WVal$<>","
       WNew$=WNew$+wVal$
    EndIf
Next i    

Wstring$=Trim(wnew$)
Wtaille=Len(wString$)

;Cas où le nbre est trop petit (ex: 1 centième)
If wtaille=1 : wString$="0.0" + Trim(wString$): EndIf
If wtaille=2 : wString$="0." + Trim(wString$): EndIf
If wtaille>2 
   WLeft$=Left(wString$,wtaille-2)
   wDecim$=Right(wString$,2)
   wString$=Trim(WLeft$+"."+wDecim$)
EndIf
If ValQ(wString$)=0 : wString$="0.00" : EndIf
If Left(wString$,1)="." Or Left(wString$,1)="," : wString$="0"+wString$ : EndIf

Wstring$=Trim(wString$)
EndProcedure

;-------------------------------- Conversion Décimal vers Entier  (ex: 143.77 devient 14377)----------------------
Procedure Convertir_En_E()

wPos= FindString(Wstring$, ",", 1) 
If wpos=0   
   wPos= FindString(Wstring$, ".", 1) 
EndIf
If wpos=0   
   Wstring$=Wstring$+"00"
Else
   wDecim$=Mid(Wstring$,wpos+1,2)
   wLeft$=Left(Wstring$,wpos-1)
   wRight$=LSet(wDecim$,2,"0")
   Wstring$=Trim(wLeft$)+Trim(wRight$)
EndIf

Wstring$=Trim(wString$)
EndProcedure

;-------------------------------- Séparation en milliers --(ex: 147889.25 devient 147 889.25) ------------------
Procedure SeparerEnMillier()

For i=1 To 22  : wCar$(i)="" : Next i

Wtaille=Len(wstring$)
wCar$(1)=Mid(wString$,wtaille,1)
wCar$(2)=Mid(wString$,wtaille-1,1)
wCar$(3)=Mid(wString$,wtaille-2,1)
 
n=0 : i=4
For j=wtaille-3 To 1 Step -1
    wCar$(i)=Mid(wString$,j,1)
    n=n+1
    If n=3
       i=i+1
       wCar$(i)=Space(1)
       i=i+1
       n=0 
    Else 
       i=i+1
    EndIf
Next j
     
wstring$=""

For j=i To 1 Step -1
    wstring$=wstring$+wCar$(j)
Next j

wString$=Trim(wString$)

EndProcedure

;-------------------------------- Test si Numérique --------------------
Procedure IsNumeric(wString$)
 
  wString$=Trim(wString$)
  If Left(wString$,1)="-"
     wTaille=Len(wString$)-1
     wString$=Right(wString$,wtaille)
  Else  
     wTaille=Len(wString$)
  EndIf
     
  wNbDecim=0
  k$="" 
  Result=0
  
  For z=1 To wTaille
    k$=Mid(wString$,z,1)
    
    If k$="1" Or k$="2" Or k$="3" Or k$="4" Or k$="5" Or k$="6" Or k$="7" Or k$="8" Or k$="9" Or k$="0" Or k$="," Or k$="."
      Result=1
    Else
      Result=0
      Break
    EndIf
    
    If k$="," Or k$="."
      wNbDecim=wNbDecim+1
      If wNbDecim>1
        Result=0
        Break 
      EndIf
    EndIf
    
  Next z    
  
  ProcedureReturn Result
  
EndProcedure


;-------------------------------- Test si NbreDécimal --------------------
Procedure NbreDecimal(wString$)
  
  wString$=Trim(wString$)
  wTaille=Len(wString$)
  wNbDecim=0
  k$="" 
  Result=0
  
  For z=1 To wTaille
    k$=Mid(wString$,z,1)
    
    If k$="1" Or k$="2" Or k$="3" Or k$="4" Or k$="5" Or k$="6" Or k$="7" Or k$="8" Or k$="9" Or k$="0" Or k$="," Or k$="."
      Result=1
    Else
      Result=0
      Break
    EndIf
    
    If k$="," Or k$="."
      wNbDecim=wNbDecim+1
      If wNbDecim>1
        Result=0
        Break 
      EndIf
    EndIf
    
  Next z    
  
  ProcedureReturn Result
  
EndProcedure

;-------------------------------- Test si NbreEntier --------------------
Procedure NbreEntier(wString$)
  
  wString$=Trim(wString$)
  wTaille=Len(wString$)
  k$="" 
  Result=0
  
  For z=1 To wTaille
    k$=Mid(wString$,z,1)
    
    If k$="1" Or k$="2" Or k$="3" Or k$="4" Or k$="5" Or k$="6" Or k$="7" Or k$="8" Or k$="9" Or k$="0"
      Result=1
    Else
      Result=0
      Break
    EndIf
    
  Next z    
  
  ProcedureReturn Result
  
EndProcedure

;************************************ Récupérer les paramètres utilisateur *******************

wsql="SELECT * FROM Fparam"
CheckDatabaseQuery(IdPar,wsql)
If NextDatabaseRow(IdPar)
   wRs$=GetDatabaseString(IdPar, 0)
   wAdUser$=GetDatabaseString(IdPar,1)
   wTelUser$=GetDatabaseString(IdPar,2)
   wRCUser$=GetDatabaseString(IdPar,3)
   wMfUser$=GetDatabaseString(IdPar,4)
   WARTUser$=GetDatabaseString(IdPar,5)
   WRibUser$=GetDatabaseString(IdPar,6)
   Wlogo$=GetDatabaseString(IdPar,7)
EndIf


;--  Cette partie n'a rien à voir avec ma question du forum et nécessite d'ailleurs la présence de la DLL (FGetParamFile.dll)
;--- c'est pourquoi je la mets sous forme de commentaires------------------------------------------------------ 
;Infos de sécurité   
;UserName$="" : wdemo$="" 
;
;If OpenLibrary(0, "GetParamFile.dll")
;   UserName$=PeekS(CallFunction(0, "GetUserName","c"))
;   wDemo$=PeekS(CallFunction(0, "GetDemoValue","v"))
;  wlimit=(CallFunction(0, "GetLimitValue"))
;   CloseLibrary(0);
;
;ElseIf OpenLibrary(0, "GetParamFile.dll")
;   UserName$=PeekS(CallFunction(0, "GetUserName","",-1,#PB_Ascii))
;   wDemo$=PeekS(CallFunction(0, "GetDemoValue","",-1,#PB_Ascii))
;   wlimit=(CallFunction(0, "GetLimitValue"))
;   CloseLibrary(0)
;EndIf
;-----------------------------------------------------------------------------------------------------------------------;-- Je copie ici UNIQUEMENT le code qui nous intéresse (j'ai éliminé tous les autres codes inutiles ici )--------------- 

;Mon programme se trouve dans       d:/proINT/proint.exe
;Ma base de données se trouve dans  d:/proINT/data/DbClient.sqlite    (La table TabClient appartient à cette base)
;La base a déjà été ouverte plus haut (toutes les bases sont ouvertes au début de ce programme), 

voici un aperçu de l'ouverture de la base testée : 

;IdClient=2
;Dbs$ = "Data\DbClient.sqlite"
:If Not OpenDatabase(IdClient, Dbs$, "", "")
:   MessageRequester("Erreur", "Ouverture " + Dbs$ + " impossible!")
:   End
:EndIf
 
; Observations:
;-- Puisque je ne reçois aucun message et le programme ne s'arrête pas, donc la base a été convenablement ouverte 

;Voici le code qui nous intéresse

[b]Wsql="Select * FROM TabClient WHERE Ville=" + chr(34) + "RENNES" + chr(34)
CheckDataBaseQuery(IdClient,Wsql)
While NextDataBaseRow(IdClient)
     NomClient$=GetDataBaseString(IdClient,1)
     Debug NomClient$
Wend
End
[/b]
J'ai fait ça uniquement pour tester si le réseau marche bien ( j'ai saisi quelques enregistrements clients au niveau du PC1
et j'ai saisi encore d'autres enregistrements au niveau du PC2, en revenant sur le pc1, j'ai exécuté ce code qui doit m'afficher l'ensemble des clients saisi dont la ville = rennes, le résultat ne donne que ce qui a saisi sur le pc utilisé... c'est ça mon problème c'est comme si je n'utilise pas de réseau...


Merci encore de votre aide
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Réseau inactif... Pourquoi??

Message par falsam »

Code : Tout sélectionner

Dbs$ = "Data\DbFam.sqlite"
If Not OpenDatabase(IdFam, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf
ça confirme mon propos précédent. Ta base SQLite ne se trouve pas sur un serveur ou un dossier partagé par l'ensemble des utilisateurs ayant accès à cette base.

A part ça je ne comprends pas pourquoi tu utilises 45 bases de données dans ton programme. j'ai l'impression que tu as une table par base de données. !!
omega a écrit :Le programme se comporte comme s'il n'y a aucun réseau installé... Pourquoi ?
Que ce soit Pure basic, Php, Windev, Access..... aucun langage ou atelier de génie logiciel sait ou se trouve une base de données si on ne lui indique pas un chemin d'accés que ce soit sous la forme d'une adresse IP ou d'un chemin d’accès.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Réseau inactif... Pourquoi??

Message par omega »

Bonjour,
je ne comprends pas pourquoi tu utilises 45 bases de données dans ton programme. j'ai l'impression que tu as une table par base de données. !!
Non, pas vraiment, j'ai déjà expliqué qu'il s'agit d'un gros projet (j'ai en tout 63 bases de données en réalité et j'ai plus de 10 tables par base)..
Ta base SQLite ne se trouve pas sur un serveur ou un dossier partagé par l'ensemble des utilisateurs ayant accès à cette base.

Justement toute la question est là: Comment indiquer ce chemin si j'utilise un dossier partagé? Je n'ai jamais utilisé un dossier partagé je veux justement apprendre: comment faire ? Je suppose que je dois ouvrir le dossier partagé de windows et copier ma base dans ce dossier ... et... l'exécutable? dois-je obligatoirement le mettre dans ce dossier? ou peut être mettre une copie de mon exécutable au niveau chaque pc? Et quelle est la lettre du lecteur (chemin complet) que je dois utiliser pour ouvrir ma base? J'ai d'autres questions à poser dans ce domaine mais je veux pas vous déranger davantage pour l'instant..

Merci de m'éclaircir
Win7 (x64) 64 bits Pb 5.72
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Re: Réseau inactif... Pourquoi??

Message par Golfy »

La syntaxe la plus simple en mode UNC(Microsoft) :

Code : Tout sélectionner

\\Nom_Serveur\Nom_Partage\Nom_Dossier\...\Nom_fichier
Purebasic accepte ce format.

Sinon, sur le serveur, créer un partage sur le répertoire voulu (voir les forums spécialisées si tu ne sais pas faire), puis sur les postes où tu dois installer ton application, allez dans l'Explorer (Attention pas IExplorer qui est le navigateur mais bien Explorer, raccourci = Touche Windows + E)
* Cherches dans 'Outils' 'Connecter un lecteur réseau...'
* Choisi un lettre (toujours la même sur l'ensemble des postes de préférence :wink: )
* Taper le chemin UNC (ou 'Parcourir'... là encore, y'a des forums pour ça)
* Choisir 'Reconnecter au démarrage'
* Désormais, ta base est accessible via la lettre que tu as choisie (ex: Z:\Nom_Dossier\...\Nom_fichier)

Espérant t'avoir éclairé,
Golfy
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Réseau inactif... Pourquoi??

Message par omega »

Bonjour Golfy et un grand merci pour toutes ces informations utiles...

Bon, récapitulons:
J'ai une base de données et mon exécutable (par exemple) MaBase.sqlite + MonProg.exe

1. Je dois donc créer un partage sur le répertoire voulu de mon poste
2. Sur les postes ou je dois installer mon application, je vais dans l'Explorer (Touche Windows + E) pour créer un partage sur le répertoire voulu
* Je cherche dans 'Outils' 'Connecter un lecteur réseau...'
* Je choisis une lettre quelconque (exemple Z)
* Je tape le chemin UNC (exemple : Z:\Nom_Applic\MonProg.exe)
* Je choisis 'Reconnecter au démarrage'

Question: Est-ce que le partage doit se faire obligatoirement sur tous les postes? Sinon, le fait de partager mon poste avec un poste 2 ne signifie pas que le poste 2 est déjà partagé ?? J'avoue que c'est un peu flou pour moi mais.. bon, je vais tester tout ça demain... merci encore Golfy

Eh..! Si j'ai écrit ds bêtises ici dis-le moi STP...
Win7 (x64) 64 bits Pb 5.72
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Re: Réseau inactif... Pourquoi??

Message par Golfy »

omega a écrit : Question: Est-ce que le partage doit se faire obligatoirement sur tous les postes? Sinon, le fait de partager mon poste avec un poste 2 ne signifie pas que le poste 2 est déjà partagé ?? J'avoue que c'est un peu flou pour moi mais.. bon, je vais tester tout ça demain... merci encore Golfy
Considère que si tu viens de déménager dans une ville, tu dois donner ton adresse à tous tes amis pour qu'ils puissent venir te voir : ce n'est pas parce que ton portail est ouvert, qu'ils devineront que c'est chez toi !
Il en est de même pour le réseau : tu ouvres un partage sur ton poste = ouvrir ton portail, mais tu dois encore configurer les autres postes (tes amis) pour qu'ils trouvent l'adresse :)
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
Répondre