IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Insert sur MySQL database avec null et bit


Sujet :

Delphi

  1. #1
    Membre habitué
    Inscrit en
    Mars 2002
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Mars 2002
    Messages : 230
    Points : 127
    Points
    127
    Par défaut Insert sur MySQL database avec null et bit
    Bonjour,

    Peut être un peu évasif le sujet, mais je pense qu'il y a á peu prés tous les mots relevant dedans.
    Voila, je voudrais insérer des valeurs dans une table MySQL á l'aide du composant ADOCommand.
    Mon probléme est que j'ai des valeurs qui peuvent être null, et d'autres 1 bit (booléennes), et lá je nage!

    Les valeurs doivent á moins que je ne me trompe, être écrit comme string si je veux pouvoir les passer comme arguments dans mon SQL non?

    Mes questions sont:
    Comment dois je déclarer AlbumNavn_Value si la valeur est null afin de pouvoir l'insérer?
    Je n'ai jamais utilisé auparavant le bit, mais ca me parait bien (0 false)/(1 true) et ca ne prend pas de place, mais comment les passer dans les arguments de mon ADOCommand pour donner une valeur á Variant_Value?

    Si vous connaissez des pages avec des exemples concrets, j'apprécierais car j'ai un peu de mal á comprendre la syntaxe du manuel!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Var
    ClefObjet, Temp : String ;
    Stemplet_Value, Variant_Value, AlbumNavn_Value: String;
    begin
    ClefObjet := 'AN' + CmbBx_Album_Navn.Text + 'AN' + CmbBx_Album_Nummer.Text + 'S' + CmbBx_Side.Text + 'L' + CmbBx_Linie.Text + 'P' + CmbBx_Placering.Text ;
    if ChckBx_Stemplet.Checked = True Then Stemplet_Value := 'is True' else Stemplet_Value := 'is False';
    if ChckBx_Varianter.Checked = True Then Variant_Value := 'is True' else Variant_Value:= 'is False';
    if CmbBx_Album_Navn.Text <> '' Then AlbumNavn_Value := CmbBx_Album_Navn.Text else AlbumNavn_Value := 'is null';
     
    With AdoCommand1 do
       begin
       Temp:= 'INSERT INTO objekt3_1 (ObjektNogle, ' + KatalogetInit + 'Nogle , AlbumNavn, AlbumNummer,';
    Temp:= Temp + ' Side, Linie, Placering, Antal, Stemplet, Varianter, Samling, Object)';
    Temp:= Temp + 'VALUES (' + ClefObjet + ', ' + dt_Kat_Nogle.Text + ', ' + AlbumNavn_Value;
    Temp:= Temp + ', ' + CmbBx_Album_Nummer.Text + ', ' + CmbBx_Side.Text + ', ';
    Temp:= Temp + CmbBx_Linie.Text + ', ' + CmbBx_Placering.Text+ ', ' + CmbBx_Antal.Text;
    Temp:= Temp + ', ' + Stemplet_Value + ', ' + Variant_Value;
    Temp:= Temp + ', ' +  CmbBx_Samling.Text;
    Temp:= Temp + ', ' + CmbBx_Objekt.Text +');';
    prepared := False;
    commandText := Temp;
    ParamCheck := True;
    With Parameters do
       begin
       ParamByName('ObjektNogle').Value := ClefObjet;
       ParamByName(KatalogetInit + 'Nogle').Value := dt_Kat_Nogle.Text;
       ParamByName(AlbumNavn).Value := AlbumNavn_Value;
       ...
       ParamByName(Varianter).Value := Variant_Value;
       ...
       end;
       prepared := True;
       Execute; // Pour exécuter la requête
       end;
    Merci
    Sincérement
    Jean-Christophe

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Tu peux utiliser le TinyInt(1) qui est géré naturellement par Delphi comme un BooleanField !
    Attention TinyInt(2) est gére comme un NumericField !

    tu peux utiliser la méthode Clear ou assigné à Null !
    En général, je n'insère pas de NULL en requête paramètrée, je laisse la valeur par défaut ...

    Je trouve ça rigolo de mélanger ParamByName et une requête construite en concat !

    où sont les : pour indiquer les paramètres ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. insert sur clef etrangere avec sf2.1
    Par pingolitipus dans le forum Doctrine2
    Réponses: 4
    Dernier message: 02/10/2012, 11h28
  2. [MySQL] Formulaire multiples et INSERT sur plusieures tables avec même ID
    Par mfredok dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 25/11/2010, 13h59
  3. String to Date pour insertion sur MySQL
    Par kaymos dans le forum Langage
    Réponses: 10
    Dernier message: 11/02/2010, 16h06
  4. [MySQL 4.1] Count sur jointure avec null
    Par Arnard dans le forum Requêtes
    Réponses: 6
    Dernier message: 16/07/2007, 09h38
  5. [MySQL] Update / Insert sur MySQL
    Par Cheeper dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 03/07/2007, 09h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo