09. marts 2000 - 18:59Der er
10 kommentarer og 3 løsninger
Avanceret sql søgning
Hvordan får man ..wildcard til at virke eller like sætningen. f.eks. med hensyn til dette where firmanavn like "d*" altså starter med D. Med Wildcard operator har jeg læst at det er muligt f.eks. at hente firmanavn mellem g..t. Men jeg kan ikke få noget af dette til at virke i database desktop fra Borland. det er meningen det skal integreres i delphi senere. Derfor er jeg intereseret i om nogen har prøvet det og fået det til at virke.
koonz > Det du melder ud med, gør jo ikke nogen forskel! madshenrik manglede et wildcard (blev givet), samt noget med at hente mellem g..t (som ikke blev leveret, hverken fra dig eller fra jeg)
Ergo: det sværeste mangler stadig... (det ER svært, for efter stort opslag i min SQL-bog, fandt jeg intet, så...)
Volstrup - tak for rettelsen - kan ikke lige se hva den sku til for, da jeg mener han også fiskede lidt efter delphi syntaxen - men anyway, jeg havde overset det sidste i spørgsmålet
Fyld dine bogstaver (som du vil søge på) ind i et string array, søg på om strengen er tom, hvis den er det så lav ikke or sætningen const cMAxLetters = 28;
var i := Integer;
qry.Close; qry.sql.clear; qry.sql.add('Select * From Table'); qry.sql.add('Where Firmanavn Like :WILDFIRMA'); qry.ParamByName('WILDFIRMA').AsString := BogstavArray[1] + '%'; For i := 2 To cMAxLetters do begin If BogstavArray[i] <> '' then qry.sql.add('Or Where Firmanavn like'+ BogstavArray[i]+'%'''); end; qry.Open;
Koden er ikke testet, så den skal måske lige kontroleres - og det kan muligvis gøres smartere
Selv tak - det var jo ikke ment som nogen fornærmelse, eller noget. Blot en lille rettelse, da jeg næsten kunne lugte at du også ville kunne lave det sidste... Tror blot at madshenrik regnede med at det kunne laves smart i sql-sætningen...Måske det kan gøres med noget limit, eller lignende... For den anden vil jo kun virke i Delphi (og det hele blev testet i database-explorer).
Tak for hjælpen indtil videre, her er et udplug fra database desktop hjælpen, det der er problemet er hvor det skal angives og hvordan. The .. wildcard operator matches any series of any number of characters, including blank spaces. The .. wildcard operator is case-insensitive.
Note: To retrieve values from a memo or formatted memo field, you must use the .. wildcard operator to specify a pattern selection condition. (Typing an exact match in these field types means typing the entire memo value; to prevent this unnecessary effort, Paradox does not allow it.) You can also use the @ wildcard operator to specify a pattern match in these field types, but you must use it in combination with the .. wildcard operator.
Suppose you want to find shops in the Customer table with the word Dive in their names. If you used the LIKE operator and typed LIKE dive in the Name field of the Customer table, you would only get dive shops whose names started with the word Dive and for whom Dive represented at least half of the letters of the entire name value. If, instead, you type ..dive.. in the Name field, Paradox generates an Answer table that shows customers with the word Dive anywhere in their name. håber det giver et indblik i hvad jeg mener. og jeg mener bestemt det hele skulle kunne laves i sql.
SELECT * FROM table WHERE field BETWEEN 'CANMANs venstre øre' AND 'CANMANs højre øre'
Men dette vil blot returnere et tomt resultat (if you get my draft) ;-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.