This relies on the SQLToCSV vbscript Marcus posted a while back and sorts using SQL "order by" on a csv file.
I have an idea for making the grid reverse sort also but have not typed it up yet. Anyone else think they can do it? There's 20 points in it if you do.
Hope someone finds this useful.
Code: Select all
VBSTART
Sub SQLToCSV(connection_string,sql_string,output_file)
Dim outFile, objConnection, objRecordSet, strSQL, intCount
set outFile = CreateObject("Scripting.FileSystemObject").CreateTextFile(output_file)
Set objConnection = CreateObject("ADODB.Connection")
objConnection.open connection_string
Set objRecordSet = objConnection.Execute(sql_string)
for intcount = 0 to objRecordSet.fields.count -1
if intcount <> objRecordSet.fields.count-1 then
outFile.write """" & objRecordSet.fields(intcount).name & ""","
else
outFile.write """" & objRecordSet.fields(intcount).name & """"
end if
next
outFile.writeline ""
do while not objRecordSet.eof
for intcount = 0 to objRecordSet.fields.count - 1
if intcount <> objRecordSet.fields.count - 1 then
outFile.write """" & objRecordSet.fields(intcount).value & ""","
else
outFile.write """" & objRecordSet.fields(intcount).value & """"
end if
next
outFile.writeline ""
objRecordSet.movenext
loop
objRecordSet.Close
set objRecordSet = Nothing
objConnection.Close
set objConnection = Nothing
outFile.Close
set outFile = Nothing
End Sub
VBEND
Dialog>Dialog1
object Dialog1: TForm
Left = 470
Top = 142
HelpContext = 5000
BorderIcons = [biSystemMenu]
Caption = 'Grid Sort Test'
ClientHeight = 770
ClientWidth = 550
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = True
ShowHint = True
OnTaskBar = False
PixelsPerInch = 96
Position = poScreenCenter
TextHeight = 13
object MSStringGrid1: tMSStringGrid
Left = 0
Top = 0
Width = 550
Height = 770
ColCount = 5
DefaultRowHeight = 18
DrawingStyle = gdsGradient
FixedColor = 8388863
FixedCols = 0
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
Options = [goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goFixedColClick, goFixedRowClick, goFixedHotTrack]
ParentFont = False
ParentShowHint = False
ShowHint = True
TabOrder = 0
ColWidths = (
40
150
75
75
75)
end
end
EndDialog>Dialog1
AddDialogHandler>Dialog1,MSStringGrid1,OnFixedCellClick,Sort
GetFileList>c:\*.*,vData
Separate>vData,;,vLine
Let>vDirList="Line","File","Size","Date","Time"%crlf%
Let>kk=0
Repeat>kk
Add>kk,1
Let>value=vLine_%kk%
FileSize>value,vFileSize
FileDate>value,vFileDate
FileTime>value,vFileTime
If>{%kk%<(%vLine_Count%-1)}
ConCat>vDirList,"%kk%","%value%","%vFileSize%","%vFileDate%","%vFileTime%",%crlf%
Else
ConCat>vDirList,"%kk%","%value%","%vFileSize%","%vFileDate%","%vFileTime%"
EndIf
Until>kk={%vLine_Count%-1}
DeleteFile>%temp_dir%DirList.csv
SetDialogObjectFont>Dialog1,MSStringGrid1,Arial,10,1,0
SetDialogProperty>Dialog1,MSStringGrid1,LoadFromCSV,vDirList
WriteLn>%temp_dir%DirList.csv,wres,vDirList
Show>Dialog1,res1
SRT>Sort
DeleteFile>%temp_dir%SortedDirList.csv
If>Sort_ACol=1
Let>Sort_Col=File
EndIf
If>Sort_ACol=2
Let>Sort_Col=Size
EndIf
If>Sort_ACol=3
Let>Sort_Col=Date
EndIf
If>Sort_ACol=4
Let>Sort_Col=Time
EndIf
Let>Con=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%temp_dir%;Extended Properties='text;HDR=YES;FMT=Delimited'
Let>SQL=SELECT * FROM DirList.csv order by %Sort_Col%
Let>vFile=%temp_dir%SortedDirList.csv
VBRun>SQLToCSV,con,SQL,vFile
ReadFile>%temp_dir%SortedDirList.csv,vDirList
SetDialogProperty>Dialog1,MSStringGrid1,LoadFromCSV,vDirList
End>Sort