Hallo allemaal,
Onderstaande procedure werkt niet goed. De bedoeling is dat HStr := 'ORDER BY @DA, @BA, @CA';
wordt vervangen door HStr := 'ORDER BY @@4, @@1, @@2'; maar het resultaat is HStr := 'ORDER BY @@4, @BA, @CA';
Ik heb al van alles geprobeerd maar ik krijg het niet voorelkaar. Hoe is dit op te lossen?
H.G. Frans Dubbeld
Code:
PROCEDURE TForm1.Button1Click(Sender : TObject) ;
PROCEDURE Conversie_KolomNamen_;//(StringGrid2: TStringGrid; StringGrid2: TStringGrid);
// Deze procedure vervangt de kolomnaam van de database
// door het kolomnummer (layout @nn, nn kolomnummer)
VAR
I, R, C: INTEGER;
HStr,HStr1: STRING;
KolomNaam: STRING;
Lijn : STRING;
FUNCTION ExactWordInString(Text: STRING; WORD : STRING) : BOOLEAN;
VAR
I : INTEGER;
BEGIN
Text := UpperCase(Text);
WORD := UpperCase(WORD);
Text := StringReplace(Text,#32,'',[rfReplaceAll]);
FOR I := 0 TO 64 DO
WORD := StringReplace(WORD, Chr(I),#32,[]);
Text := #32 + Text + #32;
WORD := #32 + WORD + #32;
ExactWordInString := False;
ExactWordInString := Pos(Text, WORD) <> 0;
END;
BEGIN
FOR C := 0 TO StringGrid2.ColCount - 1 DO // Kolomnamen uit database
BEGIN
KolomNaam := Trim(UpperCase(StringGrid2.Cells[C, 0]));
HStr := 'ORDER BY @DA, @BA, @CA';
IF ExactWordInString(KolomNaam,HStr) = True THEN
//If Pos(KolomNaam,UpperCase(Trim(HStr))) <> 0 then
BEGIN
HStr := StringReplace(HStr, KolomNaam, '@' + IntToStr(C)+#32, [rfIgnoreCase]);
Label1.Caption := Trim(HStr);
Memo1.Lines.Add(IntToStr(C)+' '+HStr);
END;
END;
END;
BEGIN
Conversie_KolomNamen_;
END;
PROCEDURE TForm1.FormCreate(Sender : TObject) ;
VAR
C : INTEGER;
BEGIN
FOR C := 0 TO 5 DO
BEGIN
StringGrid2.Cells[C,0] := Chr(C+65)+'A';
END ;
END;
END.
Bookmarks