FileExists -> Anwendbar auf Tabelle?



  • P.S. wenn du Open() sagst, muss du auch Close() sagen...



  • @ Xqgene

    1.) eben, nach dem string "Item" soll er ja nicht suchen, sondern nach dem variablen inhalt der stringvariable ITEM!

    aber wie teile ich das der SQL anweisung mit?

    2.) richtig.

    3.) weil ich das übersichtlicher finde 😉

    ich habe also noch 2 probleme.
    ich möchte nach dem inhalt des strings ITEM suchen.
    und ich würde gerne, das deren inhalt nicht dem EXAKTEN dateinamen der tabelle entsprechen muß, sondern einfach nur ein teil des namens sein muss, um ihn zu finden.

    kannst du mir weiterhelfen?

    thx
    Bj



  • Bj schrieb:

    ich möchte nach dem inhalt des strings ITEM suchen.
    und ich würde gerne, das deren inhalt nicht dem EXAKTEN dateinamen der tabelle entsprechen muß, sondern einfach nur ein teil des namens sein muss, um ihn zu finden.

    String SQL = "select * from blabla where blublu LIKE '%" + String(Item->Iregndwo_versteckter_name) + "%'";
    Query1->SQL->Add(SQL);
    

    und um deine weitere frage zu vermeiden:

    LIKE
    Bestimmt, ob die angegebene Zeichenfolge einem angegebenen Muster entspricht. Ein Muster kann normale Zeichen und Platzhalterzeichen einschließen. Bei einem Mustervergleich müssen normale Zeichen exakt mit den angegebenen Zeichen in der Zeichenfolge übereinstimmen. Platzhalterzeichen können jedoch mit beliebigen Teilen der Zeichenfolge übereinstimmen...



  • gut, und naja, jetzt gibt es keinen zähler mehr.
    kann ich diesen mit count wieder einfach einbauen , ja?
    weil du hast ihn weggelassen (ohne grund?!)

    habe es einfach mal eingebaut, und mein code sieht jetzt wie folgt aus:

    Query1 -> SQL -> Add ("select count(*) as Zaehler from vapbitmap where   
                         bmp_name LIKE '%" + String(Item->Name) + "%'");
        Query1 -> Open();
        int exists = Query1 -> FieldByName ("Zaehler") -> AsInteger;
        if (exists < 1)
        ListBox1 -> Items -> Add (Item->Name);
    

    trotzdem findet er wieder keine einzige übereinstimmung! 😡
    thx
    Bj



  • vielleich gibt es einfach nicht?
    vielleicht steht nur müll in deinem Item->Name? Debug?



  • das hab ich natürlich schon kontrolliert.
    und natürlich steht nicht nur müll drin.
    enthalten sind zB (in Item->Name):

    \\ordner\\bild1.bmp

    und genau das ist auch in dieser form in der tabelle vorhanden:

    .\ordner\bild1.bmp

    -> also müsste er es doch finden, oder etwa nicht?

    hier nocheinmal mein code:

    for(int i = 0; i < FileList->Count; i++)
      {
        Application->ProcessMessages();
        Item = (pFiledata)FileList->Items[i];
        Query1 -> SQL -> Clear();
    
        Query1 -> SQL -> Add ("select count(*) as Zaehler from vapbitmap where  
                         bmp_name LIKE '%" + String(Item->Name) + "%'");
        Query1 -> Open();
        int exists = Query1 -> FieldByName ("Zaehler") -> AsInteger;
         // exists bleibt leider immer 0
        if (exists < 1)
         ListBox1 -> Items -> Add (Item->Name);
        delete Item;
        Query1 -> Close();
      }
    


  • upps..



  • upps? was meinste denn jetzt damit?
    soll ich das vielleicht in der hilfe nachschaun? 💡



  • kann denn unmöglich an deiner SQL anweisung etwas falsch sein?

    Query1 -> SQL -> Add ("select count(*) as Zaehler from vapbitmap where
    bmp_name LIKE '%" + String(Item->Name) + "%'");

    vielleicht stimmt das mit den % irgendwie nicht richtig.

    Bj



  • Bj schrieb:

    upps? was meinste denn jetzt damit?
    soll ich das vielleicht in der hilfe nachschaun? 💡

    in die hilfe?!! rofl

    upps heist, dass ich mich verschrieben habe...

    was für ne db nutzt du?
    vielleicht kennt sie LIKE nicht so richtig?

    syntax ist ok. weiter geht es nur um logik. und da kann dir keiner so richtig helfen. also debug an, und step by step...



  • die datebank kennt LIKE.
    denn, wenn ich den befehl eingebe:

    select count(*) as Zaehler from vapbitmap where bmp_name = 'GENAUER
    DATEINAME'

    dann findet er diese Datei, demnach ist der zähler richtig auf 1.

    wenn ich jetzt aber diese zeile schreibe:

    select count(*) as Zaehler from vapbitmap where bmp_name =
    '%"+IRGEND EIN WORT WAS VORKOMMT+"%'

    dann funktioniert es nicht, der zahler bleibt auf 0.
    und demnach stimmt etwas mit den % und der ganzen anweisung nicht.
    ich denke hier muss sich einfach ein fehler befinden:
    '%"+IRGEND EIN WORT WAS VORKOMMT+"%'

    nur ich kenne mich da zu wenig aus, um diesen selber zu beheben.
    ich habe auch schon verschiedenen formen ausprobiert, ohne die + zum beispiel, aber nix funzt. 😡 😡 😡

    please help me :p
    Bj



  • funktioniert denn so:

    Query1->SQL->Add("select count(*) as Zaehler from vapbitmap where bmp_name LIKE '%\\ordner\\bild1.bmp%'");
    

    und welche db ist es?



  • nein so auch nicht.
    ich probiere es auch in SQL selber aus, und dort funzt das so wie eben beschrieben.
    aber nicht auf diese art:
    '%irgendwas%'

    informix benutze ich.
    aber dort müsste es doch eigentlich auch gehen, denn like kennt er ja.
    nur mit % hat er anscheinend seine probleme.



  • Probier's mal mit ***** als Wildcard-Zeichen.
    Ich dachte, das gibt's nur in Access ...



  • habe es auch schon auf diese art ausprobiert, mit diesen formen:
    like '"Auswahl"'
    like 'Auswahl'
    like '*Auswahl*'
    ...

    aber dies geht leider auch nicht. 😡

    *verzweifel*

    Bj


Anmelden zum Antworten