[R] Problème de recherche SQlite

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
SurPriseS
Niveau 6
Niveau 6
Messages : 293
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

[R] Problème de recherche SQlite

#1

Message par SurPriseS »

Bonjour !

J'ai un petit soucis avec la recherche dans une bdd avec sqlite...

Code : Tout sélectionner

_SQlite_Query (-1, "SELECT * FROM produit WHERE cb1='910-000199';", $hQuery)
J'essaye de faire une recherche dans la table "produit" et dans la colonne 'cb1' (et j'aimerais bien dans la colonne "cb2" aussi) de la valeur '910-000199' et uniquement cette valeur (correspond à un code barre), mais je n'arrive pas à limité ma recherche au colonne qui m'intéresse et aussi il me sort toute les valeurs contenant tout ou partie de ma recherche...
Je galère depuis hier à essayer de lire des tuto sur SQL, mais j'ai l’impression de bien le faire pourtant...

Bref, si vous avez une idée/solution ;)

Merci !

Le code complet si besoin : (tout en bas dans la fonction scan)(y'a beaucoup de chose très moche dedans, mais pour le moment, j'essaye juste d'avoir un truc qui fonctionne. Je rajouterais les contrôles par la suite ;))

Code : Tout sélectionner

[spoiler=]#cs ----------------------------------------------------------------------------

 AutoIt Version : 3.3.8.0
 Auteur:         MonNom

 Fonction du Script :
    Modèle de Script AutoIt.

#ce ----------------------------------------------------------------------------

; Début du script - Ajouter votre code ci-dessous.

#include <SQLite.au3>
#include <SQLite.dll.au3>

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

;--------------------------------------
;Variable
;--------------------------------------

Local $hQuery, $aRow, $aNames


;--------------------------------------
;DEMARRAGE TABLE SQL
;--------------------------------------


_SQLite_Startup ()
If @error > 0 Then Exit MsgBox(16, "SQLite Error", "SQLite.dll Can't be Loaded!")
$bdd=_SQLite_Open ("bdd")
If @error > 0 Then Exit MsgBox(16, "SQLite Error", "Can't Load Database!")

_SQLite_Exec (-1, "CREATE TABLE IF NOT EXISTS fournisseur (id INTEGER PRIMARY KEY AUTOINCREMENT ,nom ,code);")

_SQLite_Exec (-1, "CREATE TABLE IF NOT EXISTS marque (id INTEGER PRIMARY KEY AUTOINCREMENT ,nom);")

_SQLite_Exec (-1, "CREATE TABLE IF NOT EXISTS categorie (id INTEGER PRIMARY KEY AUTOINCREMENT ,nom);")

_SQLite_Exec (-1, "CREATE TABLE IF NOT EXISTS produit (id INTEGER PRIMARY KEY AUTOINCREMENT ,nom,cb1,cb2,marque,categorie,fourniseur,pa,pv,stock,date);")

#Region ### START Koda GUI section ### Form=z:\mes documents\surprises\base de donnée stock douchette\form1.kxf
Global $Form1_1 = GUICreate("BDD Stock", 623, 508, 192, 124)
Global $Input1 = GUICtrlCreateInput("", 16, 72, 273, 21)
Global $Button5 = GUICtrlCreateButton("Scan", 168, 98, 121, 25)
Global $Label1 = GUICtrlCreateLabel("Code barre 1 :", 16, 104, 71, 17)
Global $Label2 = GUICtrlCreateLabel("Produit :", 16, 48, 71, 17)
Global $Label3 = GUICtrlCreateLabel("Code barre 2 :", 16, 160, 71, 17)
Global $Input2 = GUICtrlCreateInput("", 16, 128, 273, 21)
Global $Input3 = GUICtrlCreateInput("", 16, 184, 273, 21)
Global $Label4 = GUICtrlCreateLabel("Catégorie :", 16, 224, 55, 17)
Global $Combo1 = GUICtrlCreateCombo("", 16, 248, 273, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
Global $Radio1 = GUICtrlCreateRadio("Recherche", 16, 16, 73, 25)
GUICtrlSetState(-1, $GUI_CHECKED)
Global $Radio2 = GUICtrlCreateRadio("Ajout", 104, 16, 57, 25)
Global $Button1 = GUICtrlCreateButton("Valider", 168, 16, 121, 25)
Global $Label5 = GUICtrlCreateLabel("Marque :", 16, 281, 54, 17)
Global $Combo3 = GUICtrlCreateCombo("", 16, 304, 273, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
Global $Input7 = GUICtrlCreateInput("", 16, 416, 137, 21)
Global $Label6 = GUICtrlCreateLabel("Prix achat HT :", 16, 392, 75, 17)
Global $Label7 = GUICtrlCreateLabel("Marge :", 168, 392, 90, 17)
Global $Input4 = GUICtrlCreateInput("1.3", 168, 416, 121, 21)
Global $Label8 = GUICtrlCreateLabel("Tarif auto :", 16, 448, 55, 17)
Global $Input5 = GUICtrlCreateInput("", 16, 472, 137, 21)
Global $Label9 = GUICtrlCreateLabel("Prix de vente : ", 168, 448, 75, 17)
Global $Input6 = GUICtrlCreateInput("", 168, 472, 121, 21)
Global $Label10 = GUICtrlCreateLabel("Fournisseurs :", 16, 336, 85, 17)
Global $Combo2 = GUICtrlCreateCombo("", 16, 360, 273, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))

Global $Button2 = GUICtrlCreateButton("Ajouter catégorie", 112, 216, 177, 25)
Global $Button3 = GUICtrlCreateButton("Ajouter marque", 112, 272, 177, 25)
Global $Button4 = GUICtrlCreateButton("Ajouter fournisseur", 112, 328, 177, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

;--------------------------------------
;Chargement des Combo
;--------------------------------------
_liste_fourniseur()
_liste_marque()
_liste_categorie()

;--------------------------------------
;boucle
;--------------------------------------

While 1
 $nMsg = GUIGetMsg()

     Switch $nMsg
        Case $GUI_EVENT_CLOSE
            _SQLite_Close()
            _SQLite_Shutdown()
       Exit

       case $Button1
           _bouton_valider()

       case $Button5
           _scan()

       case $Button2
           _ajout_cat()


       case $Button3
           _ajout_marque()

       case $Button4
           _ajout_fournisseur()

    EndSwitch


;~ $Input4 ; Valeur marge

;~ $Input5 ; tarif auto

;~ $Input7 ; tarif HT

;~ $Input6 ; prix de vente
;~ $Label7 ; marge

$tarif_auto = GUICtrlRead($Input7) * GUICtrlRead($Input4) * 1.196
$marge_auto = GUICtrlRead($Input6) - ( GUICtrlRead($Input7) * 1.196)
GUICtrlSetData($Input5, $tarif_auto )
GUICtrlSetData($Label7, "Marge : " & int($marge_auto) & " €" )


sleep(50)



WEnd

;--------------------------------------
;Fonctions
;--------------------------------------

;~ ------------------------------------ Ajout Catégorie
func _ajout_cat()

    $input = InputBox("Ajout", "Entrez la catégorie à ajouter :")

    if $input = ""  Then
        MsgBox(0,"","Veuillez remplir tout les champs.")
    Else
        _SQLite_Exec (-1, "Insert into  categorie (nom) values ('" & $input  & " ');")
    EndIf

    _liste_categorie()

EndFunc


;~ ------------------------------------ Ajout Marque
func _ajout_marque()

    $input = InputBox("Ajout", "Entrez la marque à ajouter :")

    if $input = ""  Then
        MsgBox(0,"","Veuillez remplir tout les champs.")
    Else
        _SQLite_Exec (-1, "Insert into  marque (nom) values ('" & $input  & " ');")
    EndIf

    _liste_marque()


EndFunc


;~ ------------------------------------ Ajout Fourniseur
func _ajout_fournisseur()

    $input = InputBox("Ajout", "Entrez le fournisseur à ajouter :")
    $input2 = InputBox("Ajout", "Entrez le code fournisseur :")

    if $input = "" Or $input2 = "" Then
        MsgBox(0,"","Veuillez remplir tout les champs.")
    Else

        _SQLite_Exec (-1, "Insert into  fournisseur (nom,code) values ('" & $input & "','"& $input2  & " ');")
        _liste_fourniseur()
    EndIf



EndFunc

;~ ------------------------------------ Listing Fourniseur
func _liste_fourniseur()


    _SQLite_Query(-1, "SELECT ROWID,* FROM fournisseur ORDER BY code;", $hQuery)
    _SQLite_FetchNames($hQuery, $aNames)
    $combo_content = ""
    GUICtrlSetData($combo2, $combo_content); vidage du combo



    While _SQLite_FetchData($hQuery, $aRow, False, False) = $SQLITE_OK ; Read Out the next Row

;~      _ArrayDisplay($aRow)
        $combo_content &= $aRow[2]& " - " & $aRow[3]&"|"

    WEnd


    GUICtrlSetData($combo2, $combo_content)

EndFunc


;~ ------------------------------------ Listing Categorie
func _liste_categorie()


    _SQLite_Query(-1, "SELECT ROWID,* FROM categorie ORDER BY nom;", $hQuery)
    _SQLite_FetchNames($hQuery, $aNames)
    $combo_content = ""
    GUICtrlSetData($combo1, $combo_content); vidage du combo



    While _SQLite_FetchData($hQuery, $aRow, False, False) = $SQLITE_OK ; Read Out the next Row

;~      _ArrayDisplay($aRow)
        $combo_content &= $aRow[2]&"|"

    WEnd


    GUICtrlSetData($combo1, $combo_content)

EndFunc



;~ ------------------------------------ Listing Marque
func _liste_marque()


    _SQLite_Query(-1, "SELECT ROWID,* FROM marque ORDER BY nom;", $hQuery)
    _SQLite_FetchNames($hQuery, $aNames)
    $combo_content = ""
    GUICtrlSetData($combo3, $combo_content); vidage du combo



    While _SQLite_FetchData($hQuery, $aRow, False, False) = $SQLITE_OK ; Read Out the next Row

;~      _ArrayDisplay($aRow)
        $combo_content &= $aRow[2]&"|"

    WEnd


    GUICtrlSetData($combo3, $combo_content)

EndFunc


;~ ------------------------------------ Fonction bouton valider
func _bouton_valider()

    if GUICtrlRead($Radio1) = 1 Then
        _recherche()
    ElseIf GUICtrlRead($Radio2) = 1 Then
        _ajout_produit()
    EndIf

EndFunc



;~ ------------------------------------ Fonction Recherche
func _recherche()
    msgbox(0,"","Recherche")
EndFunc

;~ ------------------------------------ Fonction Ajout produit
func _ajout_produit()

    $produit = GUICtrlRead($Input1) ; produit
    $cb1 = GUICtrlRead($Input2) ;code barre 1
    $cb2 = GUICtrlRead($Input3) ;code barre 2
    $c1 = GUICtrlRead($Combo1) ;categorie
    $c2 = GUICtrlRead($Combo2) ;fourniseur
    $c3 = GUICtrlRead($Combo3) ;marque
    $PA = GUICtrlRead($Input7) ;Prix Achat
    $PV = GUICtrlRead($Input6) ;Prix vente
    $stock = 0
    $date = 0


    MsgBox(0,"Résumé", "Produit = " & $produit & " ;" & @CRLF &  "Code Barre 1 = " & $cb1 & " ;" & @CRLF & "Code Barre 2 = " & $cb2 & " ;" & @CRLF &"Catégorie = " & $c1 & " ;" & @CRLF &"Marque = " & $c3 & " ;" & @CRLF &"Fournisseur = " & $c2 & " ; " )






    _SQLite_Exec (-1, "Insert into  produit (nom,cb1,cb2,marque,categorie,fourniseur,pa,pv,stock,date) values ('" & $produit & "','"& $cb1  & " ','"& $cb2  & " ','"& $c3  & " ','"& $c1  & " ','"& $c2  & " ','"& $PA  & " ','"& $PV  & " ','"& $stock  & " ','"& $date  & " ');")



EndFunc



;~ ------------------------------------ Fonction Scan

func _scan()

;~  if GUICtrlRead($Input2) = "910-000199" Then

;~      GUICtrlSetData($Input1, "Rx250") ;produit
;~      GUICtrlSetData($Input3, "5099206003873");code barre 2


;~  EndIf

$valeur = GUICtrlRead($Input2)


;~  _SQLite_Query(-1, "SELECT ROWID,* FROM produit ORDER BY nom;", $hQuery)
;~ _SQlite_Query (-1, "SELECT * FROM produit WHERE cb1=" & $valeur & ";", $hQuery)
_SQlite_Query (-1, "SELECT * FROM produit WHERE cb1='910-000199';", $hQuery)
_SQLite_FetchNames($hQuery, $aNames)





    While _SQLite_FetchData($hQuery, $aRow, False, False) = $SQLITE_OK ; Read Out the next Row

        _ArrayDisplay($aRow)

    WEnd


EndFunc





[/spoiler]
Modifié en dernier par SurPriseS le jeu. 26 juin 2014 15:05, modifié 1 fois.
SurPriseS
Niveau 6
Niveau 6
Messages : 293
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

Re: [..] Pb recherche sqlite

#2

Message par SurPriseS »

Bon, j'ai avancé un peu !

Code : Tout sélectionner

  _SQlite_Query (-1, "SELECT * FROM produit WHERE cb1 LIKE '%"&$valeur & "%' OR cb2 LIKE '%"&$valeur & "%'ORDER BY id DESC;", $hQuery)
ça me recherche bien ma valeur, dans les bonnes colonnes ! mais ça m'affiche toujours les résultats qui ne sont pas complétement identique !

Pour lui 123456 = 1234567 !
Je peut feinter en rajoutant un contrôle derrière, mais y'a surement plus simple non ?

Edit :
ça merdouille à cause du LIKE, mais c'est la seule manière qui me donne le résultat pour le moment...
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Pb recherche sqlite

#3

Message par jchd »

Bon, déjà oublie _SQLite_Query et consort, ce sont des fonctions de bas niveau qui n'ont guère d'intérêt et ne font que compliquer le code applicatif. Elles ne sont utiles qu'en interne (pour l'UDF) et dans des cas pointus où on sait ce qu'on fait et pourquoi on les emploie.

Utilise plutôt _SQLite_GetTable(), _SQLite_GetTable2d() et _SQLite_QuerySingleRow() si tu ne veux qu'une seule rangée.

Maintenant, concernant le fait que tu récupères trop ou pas assez d'après toi, il est difficile de formuler un diagnostic sans plus d'informations. Le plus simple pour être sûr de ce qui est stocké réellement dans la base est d'utiliser au moins temporairement un gestionnaire correct de BDD SQLite.

Installe SQLite Expert (la version personelle est gratuite et suffit pour faire déjà beaucoup de choses). Jette un oeil sur le contenu de tes tables.

Conseils génériques : il n'est pas souhaitable de ne pas spécifier de type pour les colonnes des tables.
SELECT * est le plus souvent à proscrire. Préférer SELECT cola, colb, ...colz FROM ...
Ensuite, vérifie le type des données stockées, tu pourrais y trouver des surprises.
Mettre les littéraux chaîne entre quillemets simple est bien, mais pas suffisant (si la chaîne contient un guillemet, le SQL part à dame !). Il faut utiliser _SQLite_FastEscape().
Il faut faire des contrôles d'erreur.

Dans Expert, onglet SQL, entre
SELECT cb1, TYPEOF(cb1), cb2, TYPEOF(cb2) FROM produit
et fait F5...

Il n'est pas possible qu'un WHERE cb1 = '123' sélectionne une rangée où cb1 contient '123456', il y a autre chose.

Si c'est du chinois, poste-moi ta base en public ou en privé et je te l'arrangerai.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
SurPriseS
Niveau 6
Niveau 6
Messages : 293
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

Re: [..] Pb recherche sqlite

#4

Message par SurPriseS »

Merci pour tes info ;)
J'utilise déjà un logiciel (je sais plus le nom, je l'ai au taff :$ ) pour visualiser mes BDD.

Pour le type des colonnes, je le sais, j'essayaus de faire marcher le reste avant de m'occuper de ça :oops: J'ai vraiment du mal avec le SQL :oops:

Enfaite, avec juste un WHERE, j’obtiens 0 résultat, si j'utilise un LIKE en plus, alors j'ai des résultats, mais conséquence du LIKE, ben, je me retrouve avec 123 = 1234 ...

Pour le moment, ma base est vide ou presque, et y'a rien de secret dedans de toute façon... J'essayerais encore un peu demain matin, et je la remplirais un peu plus avant de la poster...


Merci beaucoup en tout cas !
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Pb recherche sqlite

#5

Message par jchd »

Bon, tu sais où sonner quand ça sera cuit, hein !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
SurPriseS
Niveau 6
Niveau 6
Messages : 293
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

Re: [..] Pb recherche sqlite

#6

Message par SurPriseS »

Bon, j'ai fait une bdd "type", elle est pas exacte au niveau des valeurs, mais elle ressembleras à ça... (sauf que j'ai pas implémenté le stock et la date > je sais pas trop comment je vais gérer ça...)

Il faut supprimer l'extension .txt du fichier, je ne pouvais pas l'uploader autrement...


Merci !
Fichiers joints
base de donnée stock.au3
(9.62 Kio) Téléchargé 75 fois
bdd.txt
(6 Kio) Téléchargé 76 fois
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Pb recherche sqlite

#7

Message par jchd »

Je viens de commencer à bidouiller ça. Je te réponds plus amplement tard dans la soirée.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
SurPriseS
Niveau 6
Niveau 6
Messages : 293
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

Re: [..] Pb recherche sqlite

#8

Message par SurPriseS »

Y'a pas de soucis !
C'est pas urgent de toute façon ;)

Merci beaucoup en tout cas !
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Pb recherche sqlite

#9

Message par jchd »

P'taing, je hais le web, c'est vraiment de la daube qu'on devrait jeter le plus loin possible.
Fait caguer : je te compose une réponse avec force détails, conseils, etc.
D'accord, c'était un "mur" imbouffable, mais il contenait trois tonnes d'infos.

Et hop, ma saleté de wifi public me jette et pfft, plus rien.

J'ai trop les boules pour recommencer (ça m'a pris un bout de temps).
Tant pis, je te file le bébé modifié. Jette un sacré coup d'oeil dessus (épluche la DDL de l'ensemble pour capter comment ça marche).

Pose tes questions après. Désolé mais cette saloperie de web me les brise menu à un point que personne n'imagine.
bdd.zip
(4.31 Kio) Téléchargé 65 fois
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
SurPriseS
Niveau 6
Niveau 6
Messages : 293
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

Re: [..] Pb recherche sqlite

#10

Message par SurPriseS »

Salut !

Merci pour ton travail !

Pour ton soucis de "web" si tu utilise firefox, une petite extension pratique : http://lazarus.interclue.com/

ça sauvegarde en permanence ce que tu tape dans un champs texte, et ça permet de le récupérer par la suite si sa plante, change de page....

bref !

J'ai commencé à regarder ta version de ma bdd et j'avoue que je ne saisie pas tout, j'avais jamais entendu parler des triggers et views :$

je suppose que le triggers, sert de liaison dans la bdd ? (je vais aller me documenter sur le sujet).

Et tu parle de DDL, je ne sais pas du tout ce que c'est et google me sort beaucoup de lien sans rapport avec le sujet :oops:

Reste que je ne sais pas comment faire pour l'intégrer dans mon script (recréer les tables comme tu as fait, ainsi que les triggers et views) et j'ai toujours mon problème de recherche avec WHERE.

Merci beaucoup en tout cas, je continue de potasser !
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Pb recherche sqlite

#11

Message par jchd »

Re-recommandation : installe SQLite Expert et tu auras déjà 60% du travail de fait.
Ainsi tu pourras jouer avec le modèle avant de coder des tonnes de trucs inutiles. Oublie ton WHERE et le code AutoIt pour l'instant. Comprends et fignole la base elle-même d'abord avec Expert, tu coderas ensuite.

Un trigger SQL (déclencheur) est un bloc de SQL que le moteur exécute ou pas suite à une action (insert, update, delete) sur une table et sous conditions spécifiées dans ce trigger.

Clés étrangères (= FK = foreign keys), triggers, views, contraintes, etc. sont des choses incontournables dans toute base digne de ce nom. Ce sont des mécanismes qui assurent l'intégrité logique des informations stockées (contraintes, FK, triggers), en simplifient l'exploitation avec l'automatisation par le moteur SQL de certains aspects (triggers, FK) ou en facilitent l'accès (vues). Les vues sont comme des tables, sers t'en au maximum car ça peut faire 80% de ton appli.

Ainsi, quand on insère un mouvement de stock, il se passe un certain nombre de choses avant et après : des triggers vérifient que le stock dispo est compatible avec l'opération, que la quantité mouvementée est compatible avec le type d'opération (sortie de stock => qté < 0), etc. Ensuite, on met le stock dispo à jour et tout ça de façon atomique : soit tout est OK, soit on revient à l'état d'avant si une erreur survient.

En l'absence de cette machinerie, tout ça devrait être codé de façon moins efficace dans chaque application utilisant la base. SQL permet de ficeler ce genre de vérification une fois pour toutes et c'est valable pour toutes les applications qui utilisent la base. D'où un gain de temps considérable en développement et une robustesse accrue. On peut aller beaucoup plus loin et faire de lourdes validations des données entrées (domaine, format, valeur, cohérence, ...).

Les FK servent à s'assurer de la cohérence interne des références (à "normaliser" la base) : tu as dû voir que j'ai jeté les champs redondants (fournisseur, catégorie) de l'article et remplacé par des références à des tables distinctes, par FK. On ne peut ainsi entrer un mouvement de stock que si le type de mouvementID et le produitID existent, du fait des FK qui lient à d'autres tables. Si on supprime un article de la table produits, SQL va supprimer automatiquement tous les mouvements de stocks le concernant, sans aucun code supplémentaire. Dans ton cas, ce n'est pas une opération courante, mais bien souvent c'est très souvent qu'on a recours à ce genre de choses.

Dans une base décemment normalisée, chaque donnée ne figure qu'une seule fois : dans la table où il est "naturel" qu'elle figure. Ailleurs, on ne la dupplique pas mais on la rempplace par une référence au rang de cette information dans sa table naturelle. Marque dans table marques, marqueID dans l'article.

La DDL c'est la partie déclarative, que tu vois quand tu ouvres Expert que tu sélectionnes ta base ou une table et que tu cliques sur l'onglet DDL. C'est une vue "texte" de ce que tu vois sous l'onglet "Design" et ses sous-onglets. Google "SQL DDL" fonctionne et cible juste.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Pb recherche sqlite

#12

Message par jchd »

Argh, une chose que j'oublie systématiquement car j'ai automatisé la chose ici :

Pour que les FK fonctionnent il faut exécuter
PRAGMA foreign_keys = ON;
avant d'ouvrir la base.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
SurPriseS
Niveau 6
Niveau 6
Messages : 293
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

Re: [R] Problème de recherche SQlite

#13

Message par SurPriseS »

Le problème ayant été résolu y'a quelques temps :

Code : Tout sélectionner

 _SQlite_Query (-1, "SELECT * FROM produit WHERE cb1 = '"&$valeur & "' OR cb2 = '"&$valeur & "' ORDER BY id DESC;", $hQuery)
L'erreur venais donc juste d'un soucis de " et de '...

Faut que je continu à bosser le sujet, le SQL, c'est pas simple ^^
Répondre