Aktív témák

  • wolffy

    aktív tag

    Sziasztok!

    Segítséget szeretnék kérni a következőkben. Írtam egy Paradox adatbázis alapú kis programot Delphiben. Nem egy nagy durranás az egész, viszont tettem bele egy keresési funkciót, ami nem akar teljesen összejönni.

    Az adatbázisban partnercégek adatai szerepelnek (cégnév, cím, tel, elérhetőség, ilyesmi) persze kis és nagybetűk váltakozásával. (Általában a mondatkezdés nagybetű.) Készítettem egy paraméteres SQL lekérdezést, mely annyit tesz, hogy egy beviteli mezőbe írt értéket megfeleltet a saját paraméterének és az alapján szűri az adatbázis cégnév oszlopát. Vagyis egy gyorskeresés, hogy a beadott cégnév szerepel-e az adatbázisban.
    A gond csak ott van, hogy a cégek nevei mind nagybetűvel kezdődnek, és ha kis betűvel kezdi a user a cégnév beírását, nem talál megfelelőt.

    Olyan megoldás járt az eszemben, hogy mindent nagybetűssé alakítok az adatbázisban és a beviteli mezőt is nagybetűkre korlátozom, de szeretném elegánsabban megoldani. >> Bárhogy kezdi a begépelést a user, a program fogja fel, hogy például a ''F'' betű ugyanolyan mint a ''f''.

    Létezik erre valamiféle megoldás?? (Úgy tudtam az SQL alapból nem tesz különbséget kis és nagybetű között. Itt valahogy mégis.)

    Válaszaitokat köszönöm!

  • heihachi

    addikt

    válasz wolffy #1 üzenetére

    Amikor az SQL-ben csinálod a megfeleltetést, akkor alakítsd át mindkettőt nagybetűsre.

    Pl.:
    select tábla1.*
    from tábla1
    where upper(tábla1.cégnév) like upper(paraméter.cégnév);

    De ez csak tipp...

    "Lehet a Shift 2 már realisztikusabb mint a valóság" by NOD

  • wolffy

    aktív tag

    A lot of thanx!!! Az általad leírtakkal sikerült megoldani a problémát. Most már tényleg ideje vennem egy SQL könyvet, mert csak nagyon alapvető parancsokat ismerek.

    Köszi mindent!

  • jeges

    senior tag

    válasz wolffy #3 üzenetére

    ezér' ne vegyél sql-könyvet...főleg mer' az upper, upcase, uppercase, stb. (hol milyen alakban) függvények nem szabványos sql parancsok, ezek a fejlesztőeszköz függvényei :)
    (pl. excelben is megtalálható vmelyik, de már nem emléxem, melyik)

  • BlackWoOd

    aktív tag

    válasz wolffy #3 üzenetére

    A Delphinek is van egy ''Local SQL Guide'' nevű help-fileja.
    Abban a használható dolgok bennevannak, helyenként rövid példával.
    mod.: pontosabban a Database Desktop súgója (verziótól függően)

    [Szerkesztve]

    < ..kevés az ember, sok az emberszerű lény... >

  • wolffy

    aktív tag

    OK. Akkor ''kifaggatom'' a Delphi-t. Egyébként 7-es Enterprise verzió. Csak tudnám, hogy a Delphi-féle SQL ebben az esetben miért különbözteti meg a kis és nagy karaktereket. A Delphi egyébként sem nagyon tesz különbséget. Inkább a JBuilder az érzékeny nem?

    Köszke mindent. (Még elég kezdő vagyok.)

  • lao ce

    aktív tag

    válasz wolffy #6 üzenetére

    van egy olyan erzesem hogy kicsit talan kevered a dolgokat.
    a kis- es nagybetu keverese a delphi parancsoknal valoban lehetseges. tovabba ez akkor is rendben van mikor sql-t hasznalsz, select vagy SELECT ugyan az, bar ennek mar semmi koze a delphihez, ezt a db es a programod kozotti alrendszer intezi odbc,ado,ole db,bde vagy ami van arre, tefeled.
    viszont stringek osszehasonlitasanal ez nem igaz, 'alma' <> 'Alma' es ha belegondolsz ez igy nagyon jol van, mivel ha ez egyenlo lenne akkor igencsak nehez lenne kezelni ha valoban szukseg van a kulombsegtetelre.
    amikor te a delphi parametert hasznalod, az be van helyettesitve egy stringre mielott tovabbadja a program a db alrendszernek, igy a stringes szabalyok vonatkoznak ra.
    ha lenne egy olyan parameter monduk hogy 'case insensitive string comparison' amit be lehetne allitani az objektumhoz, az is csak azt csinalna nagy valoszinuseggel amit a kollega leirt az elobbiekben, szoval ugyanott vagy.

    nicht kompot

  • wolffy

    aktív tag

    Lényeg, hogy sikerült megoldani ezt a keresési funkciót a kis-nagybetű különbözőség kiküszöbölésével. Azonban időközben rádöbbentem, hogy tudatlanságom tovább fokozódott.

    Az eddigiek során mikor Access-ben dolgoztam megszoktam, hogy ha egy adattáblába új rekordot veszek fel, az automatikusan az utolsó rekord mögé kerül. Ugyanezt a hatást nem tudtam elérni a Delphiben található DBNavigator segítségével. Ott ugyan van rekord beszúrási lehetőség (+ jeles gombocska) de az tényleg szó szerint beszúrás. (Nekem mindig az aktuális rekord elé veszi fel az üres rekordot.)
    Tudom, hogy rendezett tábla esetében nem gond mindez, hiszen a bárhová beszúrt új rekord úgy is a rendezési szempontok alapján bekerül a helyére, de mi a helyzet ha a tábla nem rendezett? Akkor hogyan tudom elérni az Access-ben megszokottakat, hogy a beszúrt rekord mindig az utolsó rekord mögé kerüljön?

    Bocs mindenkinek, biztos csak megint ''balfaszkodom''. :F

  • BlackWoOd

    aktív tag

    válasz wolffy #8 üzenetére

    Nem tom' mit barkácsolsz Delphiben, de a DBNavigator komponensben tényleg csak insert van (majd ha jobban beleásod magad, átírhatod, hogy legyen benne más is).

    A TTable-nek van egy olyan metódusa, hogy ''Append'', azzal a tábla végére csinálhatsz egy új üres rekordot (a ''plusz gombocska'' az ''Insert'' metódust hívja).

    De azért felhasználóknak szánt programba nem illik beleépíteni a ''DBNavigator'' komponenst, szerintem.

    < ..kevés az ember, sok az emberszerű lény... >

Aktív témák