Page 1 sur 1

[RESOLU] Souci d'initialisation de String

Publié : jeu. 17/déc./2015 14:17
par falsam
Ce code retourne un string correctement initialisé

Code : Tout sélectionner

Define.s ReqSql

;Préparation de la requête de création de la table des medias
ReqSql = "CREATE TABLE medias ("

ReqSql + "IdMedia INTEGER PRIMARY KEY," ;Identifiant enregistrement
ReqSql + "media BLOB,"                  ;Contenu binaire
ReqSql + "Name TEXT"                    ;Libellé de l'opération

ReqSql + ")"

Debug ReqSql
debug a écrit :CREATE TABLE medias (IdMedia INTEGER PRIMARY KEY,media BLOB,Name TEXT
Si j’insère ce code dans un code de création de base de données la variable ReqSql ne s'initialise pas correctement.

Code : Tout sélectionner

EnableExplicit

Define.i Database.i
Define.s DatabaseName = "assets.sqlite", ReqSql = ""

;Création d'un fichier vierge
If CreateFile(Database, DatabaseName)
  CloseFile(Database) 
Else
  MessageRequester("Erreur", "Impossible de créer un fichier") ;En principe ça ne devrait pas arriver :)
  End
EndIf

;Ouverture et création de la base de données 
UseSQLiteDatabase()
If OpenDatabase(Database, DatabaseName, "", "", #PB_Database_SQLite)
  
  ;Préparation de la requête de création de la table des medias
  ReqSql = "CREATE TABLE medias ("
  
  ReqSql + "IdMedia INTEGER PRIMARY KEY," ;Identifiant enregistrement
  ReqSql + "media BLOB," ;Contenu binaire
  ReqSql + "Name TEXT" ;Libellé de l'opération
    
  ReqSql + ")"
  
  Debug ReqSql
  
  ;Exécution de la requete
  DatabaseUpdate(Database, ReqSql)  
  CloseDatabase(Database)
  
  If DatabaseError() = ""
    MessageRequester("Information","Création de la base terminée")
  Else
    MessageRequester("Information","Erreur lors de la création de la table 'medias'" + #CRLF$ + DatabaseError())
  EndIf
Else
  MessageRequester("Erreur","Erreur lors de la création de la base de données" + Chr(13) + DatabaseError() )
EndIf
debug a écrit :IdMedia INTEGER PRIMARY KEY,media BLOB,Name TEXT)
Comme vous pouvez le voir, il manque CREATE TABLE medias (

j'ai la solution d'initialisé la variable ReqSQL de cette manière

Code : Tout sélectionner

 ReqSql = "CREATE TABLE medias (IdMedia INTEGER PRIMARY KEY, media BLOB, Name TEXT)"
et ça fonctionne mais pour plus de clarté je préfère la méthode précédente.

Pouvez vous tester et me dire si vous rencontrez ce problème ?

Re: Souci d'initialisation de String

Publié : jeu. 17/déc./2015 14:24
par Patrick88
5.40 LTS (x64) et 5.31 (x64)

trace = "CREATE TABLE medias (IdMedia INTEGER PRIMARY KEY,media BLOB,Name TEXT)"
et message "Création de la base terminée"

pat

Re: Souci d'initialisation de String

Publié : jeu. 17/déc./2015 14:31
par falsam
Merci Pat. Sujet clos. j'ai fermé PureBasic et ouvert à nouveau. Plus de souci. !!

J'aurais du faire ça plus tôt.

Re: [RESOLU] Souci d'initialisation de String

Publié : jeu. 17/déc./2015 14:54
par Marc56
Sachant que '+' et ',' en PB annulent le saut de ligne (comme '_' en VB) tu peux rendre ton code plus lisible comme ceci: :D

Code : Tout sélectionner

Define.s ReqSql

ReqSql = "CREATE TABLE medias"              + 
         "("                                + 
         "IdMedia INTEGER PRIMARY KEY,"     +   ; Identifiant enregistrement
         "media BLOB,"                      +   ; Contenu binaire
         "Name TEXT"                        +   ; Libellé de l'opération         
         ")"

Debug ReqSql
Ça fait même une seule opération de concaténation.
Et comme le commentaire est ignoré il ne gène pas, même à cet endroit.

:wink:

Re: [RESOLU] Souci d'initialisation de String

Publié : jeu. 17/déc./2015 15:12
par falsam
Hum .... Marc tu a peut être vu que c'est ce que je fais dans le code ^^

Le souci était pas là. C'est mon IDE qui a bugué. La fermeture de celui çi et ouverture par la suite a été la solution pour éliminer ce souci.

Re: [RESOLU] Souci d'initialisation de String

Publié : jeu. 17/déc./2015 15:21
par Marc56
falsam a écrit :Hum .... Marc tu a peut être vu que c'est ce que je fais dans le code ^^
J'ai vu ça

Code : Tout sélectionner

ReqSql = "CREATE TABLE medias ("
ReqSql + "IdMedia INTEGER PRIMARY KEY," ;Identifiant enregistrement
ReqSql + "media BLOB,"                  ;Contenu binaire
ReqSql + "Name TEXT"                    ;Libellé de l'opération
ReqSql + ")"

Debug ReqSql
Ça fait pareil mais question lisibilité: beurk :mrgreen:

Beaucoup moins de chance de se tromper en présentant comme ça (à mon avis) :wink:

Code : Tout sélectionner

ReqSql = "CREATE TABLE medias"              + 
         "("                                + 
         "IdMedia INTEGER PRIMARY KEY,"     +   ; Identifiant enregistrement
         "media BLOB,"                      +   ; Contenu binaire
         "Name TEXT"                        +   ; Libellé de l'opération         
         ")"

Re: [RESOLU] Souci d'initialisation de String

Publié : jeu. 17/déc./2015 15:26
par falsam
Marc56 a écrit :beurk
Mais heuuuu ..... arrête de m’embêter ^^