No. of Records in Multiple database
         jyotikumar
      
      Forums
Is there any way to crate a list of databases name and count the no. of records in each database of a folder?
Here is some code that will
Here is some code that will place the filenames and the filesizes into two arrays. It uses the project folder for its base so if you only want items from a subfolder you will have to filter those out.
Option Explicit
Dim sFilenames() As String
Dim lFileSizes() As Long
Sub Main
	Dim i As Integer
	Dim msg As String
	Call getFilenames()
	Call getFilesizes()
	For i = 0 To UBound(sFilenames)
		msg = msg & sFilenames(i) & " (" & lFileSizes(i) & ")" &Chr(13)
	Next i
	MsgBox msg
End Sub
Function getFilesizes()
	Dim i As Integer
	Dim db As database
	
	ReDim lFileSizes(UBound(sFilenames))
	
	For i = 0 To UBound(sFilenames)
		Set db = client.opendatabase(sFilenames(i))
		lFileSizes(i) = db.count
		db.close
	Next i
	
	Set db = Nothing
End Function
Function getFilenames()
	Dim task As task
	Dim collection As collection
	Dim bFirstItem As Boolean
	Dim filename As String
	
	Set task = client.ProjectManagement
	Set collection = task.Databases
	
	bFirstItem = True
	
	For Each filename In collection
		If bFirstItem Then
			bFirstItem = False
			ReDim sFilenames(0)
			sFilenames(0) = filename
		Else
			ReDim preserve sFilenames(UBound(sFilenames) + 1)
			sFilenames(UBound(sFilenames)) = filename
		End If
	Next
	
	Set collection = Nothing
	Set task = Nothing
End Function
Hi jyotikumar,
Hi jyotikumar,
I updated the code so it now outputs to an IDEA database.
Option Explicit
Dim sFilenames() As String
Dim lFileSizes() As Long
Dim sFilename As String
Sub Main
	Call getFilenames()
	Call getFilesizes()
	call createDatabase()
	Call addData()
	
End Sub
Function addData()
	Dim db As database
	Dim table As table
	Dim rs As RecordSet
	Dim rec As Record
	
	Dim i As Integer
	
	Set db = client.opendatabase(sFilename)
	Set table = db.TableDef
	
	table.Protect = False
	
	Set rs = db.RecordSet
	
	For i = 0 To UBound(sFilenames)
		Set rec = rs.NewRecord
		rec.SetCharValue "FILENAME", sFilenames(i) 
		rec.SetNumValue "FILESIZE", lFileSizes(i)
		rs.Appendrecord rec
	Next i
	
	table.Protect = True
	
	db.CommitDatabase
	
	Set rs = Nothing
	Set table = Nothing
	db.close
	Set db = Nothing
	
	client.OpenDatabase(sFilename)
End Function
Function createDatabase()
	Dim db As database
	Dim table As table
	Dim field As field
	
	Set table = client.NewTableDef
	Set field = table.NewField
	field.Name = "FILENAME"
	field.Type = WI_CHAR_FIELD
	field.Length = 100
	field.Description = ""
	table.AppendField field
	
	Set field = table.NewField
	field.Name = "FILESIZE"
	field.Type = WI_NUM_FIELD
	field.Decimals = 0
	field.Description = ""
	table.AppendField field
	
	sFilename = client.UniqueFileName("Filename and Size")
	Set db = client.NewDatabase(sFilename, "", table)
	
	Set field = Nothing
	Set table = Nothing
	Set db = Nothing
End Function
Function getFilesizes()
	Dim i As Integer
	Dim db As database
	
	ReDim lFileSizes(UBound(sFilenames))
	
	For i = 0 To UBound(sFilenames)
		Set db = client.opendatabase(sFilenames(i))
		lFileSizes(i) = db.count
		db.close
	Next i
	
	Set db = Nothing
End Function
Function getFilenames()
	Dim task As task
	Dim collection As collection
	Dim bFirstItem As Boolean
	Dim filename As String
	
	Set task = client.ProjectManagement
	Set collection = task.Databases
	
	bFirstItem = True
	
	For Each filename In collection
		If bFirstItem Then
			bFirstItem = False
			ReDim sFilenames(0)
			sFilenames(0) = filename
		Else
			ReDim preserve sFilenames(UBound(sFilenames) + 1)
			sFilenames(UBound(sFilenames)) = filename
		End If
	Next
	
	Set collection = Nothing
	Set task = Nothing
End Function
 
         
Yes, you can use the
Yes, you can use the ProjectManagement.Databases() to get a list of databases and then loop through each one and get the number of records. What type of output are you looking for?