I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
input felt 1 dim input felt 2 fals input felt 3 my som er i en database så vil jeg søg i et input felt så jeg kan skrive ********* eks *********** 700 som er dim felt nr 1 100 som er fals felt nr 2 0,045 sem er felt nr 3
Hvis du har indlæst dine felter i en linked liste, alá:
Type PPost = ^TPost; TPost = Record Felt1 : SomeType; Felt2 : SomeType; . . Next : PPost; End;
Så kan du søge således:
Var PostArray : PPost; // "Global" erklæring
Function FindPost(Find1, Find2, Find3 : SomeTypes) : PPost; Var Temp : PPost;
Function PostFound : Boolean; Begin If (Temp.Felt1 = Find1) And (Temp.Felt2 = Find2) And (Temp.Felt3 = Find3) Then Result := True Else Result := False; End;
Begin Result := Nil; Temp := PostArray;
If PostFound Then Result := Temp Else While (Found=Nil)And (Temp.Next <> Nil) Do Begin If PostFound Then Result := Temp; Temp := Temp.Next; End; End;
Funktionen FindPost vil søge din liste igennem indtil den søgt post er fundet, og i såfald returnere den pågældende post, eller til enden af listen er nået, hvilket vil resultere i at retur værdien er Nil
Bruger du en database, så er det nok nemmest at benytte en TQuery. Sæt componenten op med Alias osv. og brug så et SQL udtryk i retning af:
Function FindPost(Find1, Find2, Find3 : SomeTypes) : PPost; Begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('Select *'); Query1.SQL.Add('From DinTabelsNavn'); Query1.SQL.Add('Where Felt1='+Find1); // As strings - konvert evt. Query1.SQL.Add(' And Felt1='+Find2); Query1.SQL.Add(' And Felt1='+Find3); Query1.ExecSQL;
If Query1.RecordCount>0 Then ShowMessage('Post fundet - extract fra query som normalt) Else ShowMessage('Ingen passende poster fundet.'); End;
TTable har også nogle søge mekanismer - se fx. i online hjælpen under TBDEDataset.Locate
Eksemplet herfra, som du næsten kan bruge direkte, er:
with CustTable do Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P','408-431-1000']), [loPartialKey]);
Ups: Du har skrevet imens jeg sad og 'forfattede':
Har jeg ret i at dit problem er at brugeren (dig selv?) skal kunne indtaste en søgestreng i formatet: 700/100X0,045, men at du skal søge disse oplysninger i tre forskellige felter?
I såfald skal du ha' opsplittet ('parset' på vestjydsk) input strengen i tre felter. Det ville jeg gøre som:
Procedure ParseInput(InputStr : String; Var Felt1, Felt2, Felt3 : String); // InputStr en string med formatet '700/100X0,045' // Felt1 - Alt fra og med start til '/' // Felt2 - Alt fra '/' til 'X' // Felt3 - Alt fra 'X' til og med slut
Var Pos1 : Integer; // To hjælper variable for overskueligheden Pos2 : Integer; Begin Pos1 := Pos('/', InputStr); // Index til '/' Pos2 := Pos('X', InputStr); // Index til 'X'
If (Pos1=0) Or (Pos2=0) Then Raise Exception.Create('Error: Illegal InputString format.');
ja du ret i at mit problem er at brugeren skal kunne indtaste en søgestreng i formatet: 700/100X0,045, men at man søge disse oplysninger i tre forskellige felter
er det ok hvis jeg sender mit program til dig som er på 1,38 mb
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.