Tag Archives: Visual Basic

Crystal Reports and Visual Basic 6.0

Reports can be made quickly and easy for use with VB with Crystal Reports. But there are some problems you can encounter. For example if you use ODBC the name of the used DSN connection is saved within the report. Also when your users want to change the layout of the report they need a direct connection to the database. You can use views or a special user account to protect the structure of your database.


An other way is to make use of Data Definition files. They are just ASCII files which contains the fields and their properties that are to be used in the report. Using such a file means that there is no direct connection with the database. In Visual Basic the query is executed and the result – together with the Data Definition file – will produce the report.

To make it work you have to take three steps:


  • making the Data Definition file
  • making the report
  • merge them in VB and show the result


The Biblio.mdb will be used in this example.


Step 1: making the Data Definition file


The report needs to be a view to be of all present authors with their titles and year of publication. The fields Author.Author, Titles.Tiltle and Titles.Year Published must be shown on the report. Due the keys the table Title Authors is used. The SQL to get the result is:


SELECT Authors.Author, Titles.Title, Titles.[Year Published]

FROM Titles INNER JOIN (Authors INNER JOIN [Title Author] ON Authors.Au_ID = [Title Author].Au_ID) ON Titles.ISBN = [Title Author].ISBN;


Making the Data Definition file can be done in Crystal Reports but also in any ordinary editor like notepad. The format is fixed:







All on one line separated by a TAB.


Author   String   255 name

Title    String   255 Title

YearPublished    String   4   year


Don’t forget to save the file with the name: AuthorTitles.ttx Crystal Reports needs that to be able to define a report on this file.


Step 2: making the report


Start Crystal Report; choose for New, Standard report. On the tab Data select Active Data. On the next screen the choice is Data definition. Select with Browse the file you have made in step 1. Click on Finish. On the tab Fields select Add all and then  Preview Report.

The report will be shown. As values the given descriptions will be shown. With Design you can change what you want on the report. Just save the report (standard extension .rpt). For quick merging in VB use the same name for the report as for the Data Definition file: AuthorTitles.rpt


Step 3: merge them in VB and show the result


Open a new project in VB (name = prjDDCR). Place on the default form (name = frmDDCR) a commandbutton (name = cmdShowReport; caption = Show report). Don’t forget to add the reference for DAO (Microsoft DAO Object Library ) and for Crystal Reports (Crystal Reports Engine Object Library).


Add the next code to the general section of the form. (It’s just an example so all values are hard-coded.)


Option Explicit


Private db              As DAO.Database

Private CDOSet          As Object

Private RepApp          As Object

Private CrystRep        As CRPEAuto.Report

Private RepDb           As CRPEAuto.Database

Private RepTables       As CRPEAuto.DatabaseTables

Private RepTable        As CRPEAuto.DatabaseTable

Private LabelRows()     As Variant


On the Form_Load event add the next code. Don’t forget the code in the Form_Unload event! Change the path to the right location of your local Biblio.mdb


Private Sub Form_Load()

Set db = OpenDatabase(App.Path & “\biblio.mdb”)

End Sub


Private Sub Form_Unload(Cancel As Integer)



End Sub


Under the cmdShowReport_Click event is the code which merge the result of the executed SQL with the Data Definition file and the actual report.


Private Sub cmdShowReport_Click()

Dim strSQL          As String

Dim rs              As DAO.Recordset

Dim intFN           As Integer

Dim strFN           As String

Dim strLine         As String

Dim intX            As Integer

Dim intC            As Integer

Dim intLabelCount   As Integer

Set RepApp = CreateObject(“Crystal.CRPE.Application”)

Set CrystRep = RepApp.OpenReport(App.Path & “\AuthorTitles.rpt”)

Set CDOSet = CreateObject(“CrystalDataObject.CrystalComObject”)

intLabelCount = 0

intFN = FreeFile

strFN = App.Path & “\AuthorTitles.ttx”

Open strFN For Input As intFN

Do While Not EOF(intFN)

Line Input #intFN, strLine

If Len(strLine) <> 0 And Right(strLine, 2) <> “%%” Then

CDOSet.AddField Split(strLine, vbTab)(0), vbString

intLabelCount = intLabelCount + 1

End If


strSQL = “SELECT Authors.Author, Titles.Title, Titles.[Year Published]” + _

” FROM Titles INNER JOIN (Authors INNER JOIN [Title Author] ON ” + _

” Authors.Au_ID = [Title Author].Au_ID) ON Titles.ISBN = [Title Author].ISBN;”

Set rs = db.OpenRecordset(strSQL)

With rs

If Not (.EOF And .BOF) Then


ReDim LabelRows(.RecordCount – 1, intLabelCount – 1)


For intX = LBound(LabelRows) To UBound(LabelRows)

For intC = 0 To .Fields.Count – 1

LabelRows(intX, intC) = CStr(“” & .Fields(intC).Value)

Next ‘intC


Next ‘intX

CDOSet.AddRows LabelRows

Set RepDb = CrystRep.Database

Set RepTables = RepDb.Tables

Set RepTable = RepTables(1)

Call RepTable.SetPrivateData(3, CDOSet)

CrystRep.Preview “AuthorTitles.rpt”


End If

End With

Set rs = Nothing

Set RepApp = Nothing

Set CrystRep = Nothing

Set CDOSet = Nothing

End Sub


Compile the project. Just hit the command button. Crystal Reports will open a separate window to show the result of the executed query in the report. You can open as much reports as you wish.

The advantage of using a Data Definition file is that no difficult solutions has to be made on the database side. You don’t have to make views available to the users. You don’t have to make a special user with only access to those tables you want. Adding a new report does not mean to be forced to compile a new executable. If you save the SQL and the Data Definition files in the database you only have to update the relevant tables. You can save the reports also in the database but it’s better to have them located outside the database. Showing all available reports form a certain location is just easy to do. Merging the three files together is just a simple extension on the example project.

ভিজুয়্যাল স্টুডিও অথবা ভিজুয়্যাল বেসিক/ সি++/ সি# /এফ# চালুকরার নিয়মঃ

ভিজুয়্যাল স্টুডিও কম্পিউটারে ভালোভাবে ইন্সটল করা থাকলে নিম্নোক্ত নিয়মে শুরু করা যাবে।

১। প্রথমে কম্পিউটার চালু করতে হবে এবং এরপরে উইন্ডোজের স্টার্ট বাটনে ক্লিক করলে পপ-আফ মেনু আসবে। উক্ত চিত্রের মত।

২। এই মেনু হতে All Apps ক্লিক করলে মেনু Expand হবে। এবার মাউসের স্ক্রোল করে Microsoft Visual Studio 2010/2012/2015/2017/2019 তে যেতে হবে। এখানে আসার পরে, Visual Studio 2010/2012/2015/2017/2019 তে মাউস দ্বারা ক্লিক করে, কিছু সময় অপেক্ষা করতে হবে। চিত্রের মত।

৩। এই বার যে উইন্ডোটি আসল। এটিকে ভিজুয়্যাল স্টুডিওর Standard Windows বলা হয়। আর এই উইন্ডো থেকেই যেকোন প্রোগ্রামিং ল্যাংগুয়েজের কাজ করা যাবে। যে ল্যাংগুয়েজ গুলো ভিজুয়্যাল স্টুডিওতে আছে।


ভিজুয়্যাল স্টুডিওর উইন্ডো পরিচিতিঃ

উক্ত ভিজুয়্যাল স্টুডিও উইন্ডো কে Integrated Development Environment বলা হয়। আমরা এখানে এই উইন্ডো সম্পর্কে জানব।

টাইটেলবারঃ উইন্ডোটির সবার উপরের নাম সংবলিত বারটিকে টাইটেল বার বলে।

মেনুবারঃ টাইটেল বারের নিচে File, Edit, View …….  ইত্যাদিত সংবলিত বারকে মেনুবার বলে। এই মেনুর অধিনেক অনেক সাবমেনু বা কমান্ড আছে। যেগুলো দিয়ে ভিজুয়্যাল স্টুডিওতে প্রোগ্রামিং এর সময় অনেক কাজে লাগবে। বিভিন্ন কমান্ড করা যাবে।

টুলবারঃ মেনুবারের নিচে বিভিন্ন আইকোন সংবলিত বারকে সাধারণ টুলবার বলে। এই বারে বিশেষ কিছু কমান্ডের আইকোন বাটন রয়েছে। যেগুলোর মাধ্যমে সেই কাজ গুলো অতি-সহজে সম্পাদন করা যায়। এই রকম আরও অনেক টুলবার আছে।

ভিজুয়্যাল বেসিকে কাজ করার জন্য যে বিষয়গুলো দরকার তার সংক্ষিপ্ত বর্ণনাঃ

Project: কোন উদ্দেশ্য সম্পাদনের জন্য ভিজুয়্যাল বেসিক লেখা সম্পূর্ণ প্রোগ্রামকে প্রজেক্ট বলা হয়। একটি প্রজেক্ট এ কয়েকটি ফর্ম, ফর্মের কোড এবং মডিউল থাকতে পারে।


Module: প্রোগ্রাম একটি বিরাট ব্যাপার। একটি প্রোগ্রামকে কয়েকটি অংশে বিভক্ত করলে যে ক্ষুদ্র ক্ষুদ্র অংশ তৈরি হয় তার প্রত্যেকটি অংশকে এক একটি মডিউল বলে। সংক্ষেপে বলা যায়, কয়েকটি মডিউলের সমষ্টিই হচ্ছে একটি পূর্ণঙ্গ প্রোগ্রাম। ভিজুয়্যাল বেসিকে মডিউল কোড সংক্ষিপ্ত হয়।


Form: ফর্ম হচ্ছে Visual Basic এর প্রজেক্টের অধীনে একটি Window যেখানে কন্ট্রোল স্থাপন করে, প্রপার্টিজ সেট করে, কোড লিখে প্রজেক্ট তৈরি করা হয়। ফর্মটি একটি অবজেক্ট হিসাবে কাজ করে। একটি প্রজেক্ট একাধিক ফর্ম সমন্বয়ে গঠিত হতে পারে।

Object: অন্যান্য প্রোগ্রামে অনেক কোড লিখে যে কাজ সম্পাদন করা যায়, ভিজুয়্যাল বেসিকের কন্ট্রোল ব্যবহার করে অতি সহজে তা করা যায়। প্রয়োজনীয় কন্ট্রোলটি ফর্মে জুড়ে দিলে তার জন্য প্রয়োজনীয় কোড লেখা হয়ে যায়। কোন কার্ সম্পন্ন করার জন্য ব্যবহৃত বিভিন্ন কন্ট্রোল, ফর্ম ইত্যাদিকে অবজেক্ট বলা হয়।

Control: কোন প্রজেক্ট তৈরি করতে হলে ফর্মের উপর Textbox, Button, Label ইত্যাদি তৈরি করতে হয়। কিন্তু Visual Basic তে এগুলো তৈরি করতে কোন কোড লিখতে হয় না। যার সাহায্যে সরাসরি এইগুলো তৈরি করা যায়, উহাকে Toolbox বলে। বিভিন্ন Tool ব্যবহার করে বিভিন্ন কাজ সমাধা করা যায়। এদের প্রত্যেককে কন্ট্রোল বলে। যেমনঃ টেক্সটবক্স তৈরি করতে ব্যবহৃত হয় Textbox, Control কমান্ড বাটন তৈরি করতে ব্যবহৃত হয় Command Button control ইত্যাদি।

View মেনুর Toolbox কমান্ডে ক্লিক করলে পর্দায় বিভিন্ন কন্ট্রোল বাটন সমৃদ্ধ Toolbox দেখা যাবে।


Event: Computer চালনা করে আমরা যাবতীয় কাজ মাউস দিয়ে ক্লিক করে বা কীবোর্ডের কোন কী চেপে সম্পন্ন করি অর্থাৎ কমান্ড বাটনে ক্লিক করে কোন কাজ করি।এই করাটা একটি ইভেন্ট। অনুরূপভাবে Key-press একটি ইভেন্ট ইত্যাদি।

Visual Basic বিভিন্ন ইভেন্ট এর অধীনে কোর্ড লিখলে প্রোগ্রাম রান করিয়ে এ ইভেন্ট ঘটালে কোড নিরবাহ হয়ে কোন কাজ হয়।

Method: অবজেক্টের ক্রিয়াই হলো মেথড। Application এ বিভিন্ন অবজেক্টসমূহের ইভেন্ট নির্ধারণের পর উক্ত অবজেক্টসমূহ কি ধরনের কাজ করবে তার জন্য প্রয়োজনীয় কোড লিখতে হয়। ভিজুয়্যাল বেসিকে উক্ত কোড সমূহকে মেথড নাম অভিহিত করা হয়ে থাকে। এক একটি মেথড উহার কাজের দিক অনুযায়ী বিভিন্ন অবজেক্টের সাথ ব্যবহার করা যায়। যেমন:- Cls, Hide, Print.

ধরা যাক, ফর্ম এবং পিকচার বক্র দু’টি অবজেক্টের নাম হল Form1 এবং Picture1 এখানে Cls, Hide এবং Print এ তিনটি মেথডের ব্যবহার দেখানো হলঃ-

Form1.Cls- ফর্মটি ক্লিয়ার করবে।

Picture1.Cls- পিকচারটি ক্লিয়ার করবে।

Pciture1.Print time- পিচার বক্সে সময প্রিন্ট করবে।

Form1.hide- ফর্মটি লুকাবে।


Statement: স্টেটমেন্ট হলো একটি সম্পূর্ণ কোড লাইন। যেমনঃ Private Sub Command1_Click() হলো একটি স্টেটমেন্ট যা সম্পূর্ণ এক লাইন কোড।

বেসিক বা ভিজুয়্যাল বেসিক ভাষার ইতিহাস

কম্পিউটার প্রোগ্রামিং কি?

কম্পিউটারের নানা ধরনের ভাষা আছে। কম্পিউটারের ভাষায় কোন সমস্যা সমাধানের অর্থপূর্ণ সাজানো নির্দেশমালাকেই কম্পিউটার প্রোগ্রামিং বলা হয়।

Basic Program:

বেসিক ভাষা বা প্রোগ্রামের জন্ম 1964 সালে। যুক্তরাষ্ট্রের ডার্টমাউথ কলেজের অধ্যাপক জন কমেনি এবং থমাস কার্তুজ সরবপ্রথম বেসিক ভাষার প্রবর্তন করেন। Beginner’s All Purpose Symbolic Instruction Code এর সংক্ষিপ্ত রূপই হচ্ছে BASIC.

ব্যবহারকারীদের চাহিদার প্রতি লক্ষ্য রেখে বেসিক ভাষার কয়েকটি সংস্করণ প্রকাশিত হয়েছে। তন্মধ্যে উল্লেখ্যযোগ্য হচ্ছে BASIC, GWBASIC, QBASIC ইত্যাদি। বর্তমানে বেসিকের যে, সংস্করনটি জনপ্রিয়তার সঙ্গে অবস্থান করছে, সেটি হচ্ছে ভিজুয়্যাল বেসিক। এটি উইন্ডোজ ভিত্তিক একটি প্রোগ্রাম যা সহজে সমগ্র বিশ্বে কম্পিউটার ব্যবহারকারীদের মন জয় করতে সক্ষম হয়েছে।

Visual Basic:

Microsoft Corporation কর্তৃক 1991 সালে প্রণীত একটি প্রোগ্রাম। Visual শব্দের অর্থ দৃশ্যমান। Basic এর আভিধানিক অর্ মৌলিক। কম্পিউটারে সহজে প্রোগ্রাম রচনার জন্য ব্যবহৃত মৌলিক ভাষার নাম বেসিক। বেসিক ভাষায় প্রোগ্রাম রচনাকে আরো সহজতর করার জন্য মাইক্রোসফট এটি Graphical User Interface (GUI) এ রুপান্তর করে। GUI এ পুপান্তরিত বেসিকের ভার্সন বা সংস্করণটির নাম Visual Basic. সহজ ভাষা ব্যবহারের উপযোগিতা, অসাধারণ ডিবাগিং পদ্ধতি এবং বিভিন্ন প্রয়োজনীয় লাইব্রেরি ব্যবহারের মাধ্যমে অল্প সময়ে অতি সহজে একটি প্রোগ্রাম তৈরি করা যেতে পারে। প্রথমের কয়েকেটি ভার্সন অতিক্রম করে ভিজুয়্যাল বেসিক 6, 7.0, 2002, 2003, 2005, 2008, 2010, 2012, 2013, 2015, 2017, 2019 এসেছে। এর মধ্য হতে আমরা ভিজুয়্যাল বেসিক 2015/2017/2019 নিয়ে এখানে আলোচনা ও ব্যবহার শিখব। আমি জানি আপনাদের মধ্যে অনেকেই আছেন যারা ভিজুয়্যাল বেসিক 6 সম্পর্কে আগে থেকেই জানেন। তবে শিক্ষার কোন শেষ নেই। এই অংশটি তাদের জন্য যারা কম্পিউটার প্রোগ্রামিং এ নতুন। আমি আশা করি বাংলার সেই নতুন প্রোগ্রামার গন নতুন কিছু তৈরি করবেন।

ভিজুয়্যাল বেসিকে কাজ করতে হলে কয়েকটি বিষয় জানা দরকার।

  1. Project
  2. Module
  3. Form
  4. Object
  5. Control
  6. Event
  7. Method
  8. Statement

উপরোক্ত এই বিষয় গুলো সম্পর্কে ভালো ভাবে জানা প্রয়োজন।

আমরা পরবর্তী অংশে এই ৮ টি বিষয় সম্পর্ক আলোচনা করব।