Solved

data insert in firebird not correct

Posted on 2013-01-13
7
859 Views
Last Modified: 2013-01-16
Hi, I have a problem inserting records into a table. I'm using 2 query's to extract data from 2 tables, and insert them into a temp table; when I do the inserts , things go wrong; I get values into fields where there should not be

here is the code for extraction and insert; it seems that the dates from a previous record are also inserted in the Temp8 table by appending the next record from the query's

with Datamodule1 do begin
 try
  if Sender = OKbtn1 then
   begin
    OKbtn1.Enabled:= False;
    Printknop1.Enabled:= True;
   end
    else
     if Sender = OKbtn2 then
      begin
       OKbtn2.Enabled:= False;
       Printknop.Enabled:= True;
      end;

   T1:= Datumedit1.Value;
   T2:= Datumedit2.Value;

   //leegmaken Temp8
   Algquery1.Close;
    Algquery1.SQL.Text:= 'DELETE FROM TEMP8';
   Algquery1.ExecSQL;
   Algquery1.Transaction.Commit;

   ListglobalFIquery.Close;
    ListglobalFIquery.Params[0].AsDate:= T1;
    ListglobalFIquery.Params[1].AsDate:= T2;
   ListglobalFIquery.Open;
   ListglobalFIquery.First;

     Repeat
       //invoer gegevens in Temp8
       Algquery1.Close;
        Algquery1.SQL.Text:= 'INSERT INTO TEMP8 (DATUMFACT, LEVNAAM, FACTUURNUMMER, REFERENTIE, KASSA, AUTONUMMER, ' +
                             'KASSADATUM, KASSABEDRAG, BC, BCBEDRAG, BCDATUM, VISA, VISABEDRAG, VISADATUM, REKENING, ' +
                             'REKENINGNRTEKST, REKENINGBEDRAG, REKENINGDATUM, CH, ALIAS, REFCHECK, AANDUIDING, FACTUURBEDRAGINCL) ' +
                             'VALUES(:DATUMFACT, :LEVNAAM, :FACTUURNUMMER, :REFERENTIE, :KASSA, :AUTONUMMER, :KASSADATUM, ' +
                             ':KASSABEDRAG, :BC, :BCBEDRAG, :BCDATUM, :VISA, :VISABEDRAG, :VISADATUM, :REKENING, :REKENINGNRTEKST, ' +
                             ':REKENINGBEDRAG, :REKENINGDATUM, :CH, :ALIAS, :REFCHECK, :AANDUIDING, :FACTUURBEDRAGINCL)';
        if not ListglobalFIqueryDATUMFACT.IsNull then
         begin
          Algquery1.ParamByName('DATUMFACT').AsDate:= ListglobalFIqueryDATUMFACT.Value;
         end;
        Algquery1.ParamByName('LEVNAAM').AsString:= ListglobalFIqueryLEVNAAM.Value;
        Algquery1.ParamByName('FACTUURNUMMER').AsString:= ListglobalFIqueryFACTUURNUMMER.Value;
        Algquery1.ParamByName('REFERENTIE').AsString:= ListglobalFIqueryREFERENTIE.Value;
        Algquery1.ParamByName('KASSA').AsInteger:= ListglobalFIqueryKASSA.Value;
        Algquery1.ParamByName('AUTONUMMER').AsInteger:= ListglobalFIqueryAUTONUMMER.Value;
        if NOT ListglobalFIqueryDATKASSA.IsNull then
         begin
          Algquery1.ParamByName('KASSADATUM').AsDate:= ListglobalFIqueryDATKASSA.Value;;
         end;
        Algquery1.ParamByName('KASSABEDRAG').AsFloat:= ListglobalFIqueryKASSABEDRAG.Value;
        Algquery1.ParamByName('BC').AsInteger:= ListglobalFIqueryBC.Value;
        Algquery1.ParamByName('BCBEDRAG').AsFloat:= ListglobalFIqueryBCBEDRAG.Value;
        if NOT ListglobalFIqueryDATBC.IsNull then
         begin
          Algquery1.ParamByName('BCDATUM').AsDate:= ListglobalFIqueryDATBC.Value;
         end;
        Algquery1.ParamByName('VISA').AsInteger:= ListglobalFIqueryVISA.Value;
        Algquery1.ParamByName('VISABEDRAG').AsFloat:= ListglobalFIqueryVISABEDRAG.Value;
        if NOT ListglobalFIqueryDATVISA.IsNull then
         begin
          Algquery1.ParamByName('VISADATUM').AsDate:= ListglobalFIqueryDATVISA.Value;
         end;
        Algquery1.ParamByName('REKENING').AsInteger:= ListglobalFIqueryREKENING.Value;
        Algquery1.ParamByName('REKENINGNRTEKST').AsString:= ListglobalFIqueryREKENINGNRTEKST.Value;
        Algquery1.ParamByName('REKENINGBEDRAG').AsFloat:= ListglobalFIqueryREKENINGBEDRAG.Value;
        if NOT ListglobalFIqueryDATREKENING.IsNull then
         begin
          Algquery1.ParamByName('REKENINGDATUM').AsDate:= ListglobalFIqueryDATREKENING.Value;
         end;
        Algquery1.ParamByName('CH').AsString:= ListglobalFIqueryCH.Value;
        Algquery1.ParamByName('ALIAS').AsString:= ListglobalFIqueryALIAS.Value;
        Algquery1.ParamByName('REFCHECK').AsInteger:= ListglobalFIqueryREFCHECK.Value;
        Algquery1.ParamByName('AANDUIDING').AsString:= ListglobalFIqueryAANDUIDING.Value;
        Algquery1.ParamByName('FACTUURBEDRAGINCL').AsFloat:= ListglobalFIqueryFACTUURBEDRAGINCL.Value;
       Algquery1.ExecSQL;
       Algquery1.Transaction.Commit;
       ListglobalFIquery.Next;
     Until ListglobalFIquery.Eof;

   ListglobalBWquery.Close;
     ListglobalBWquery.Params[0].AsDate:= T1;
    ListglobalBWquery.Params[1].AsDate:= T2;
   ListglobalBWquery.Open;
   ListglobalBWquery.First;    

     Repeat
      Algquery1.Close;
       Algquery1.SQL.Text:= 'INSERT INTO TEMP8 (REKENING1, REKENINGDATUM1, REKENINGBEDRAG1, REKENINGNRTEKST1, ' +
                            'ALIAS1, CH1, FACTUURNUMMER, KASSANUMMER, KASSA, VOORSCHOT, AUTONUMMER, KASSADATUM, ' +
                            'KASSABEDRAG, BC, BCBEDRAG, BCDATUM, VISA, VISABEDRAG, VISADATUM, REKENING, REKENINGNRTEKST, ' +
                            'REKENINGBEDRAG, REKENINGDATUM, CH, ALIAS, REFCHECK, AANDUIDING, FACTUURDATUM, REFERENTIE) ' +
                            'VALUES(:REKENING1, :REKENINGDATUM1, :REKENINGBEDRAG1, :REKENINGNRTEKST1, ' +
                            ':ALIAS1, :CH1, :FACTUURNUMMER, :KASSANUMMER, :KASSA, :VOORSCHOT, :AUTONUMMER, :KASSADATUM, ' +
                            ':KASSABEDRAG, :BC, :BCBEDRAG, :BCDATUM, :VISA, :VISABEDRAG, :VISADATUM, :REKENING, :REKENINGNRTEKST, ' +
                            ':REKENINGBEDRAG, :REKENINGDATUM, :CH, :ALIAS, :REFCHECK, :AANDUIDING, :FACTUURDATUM, :REFERENTIE)';
       Algquery1.ParamByName('REKENING1').AsInteger:= ListglobalBWqueryREKENING1.Value;
        if not ListglobalBWqueryREKENINGDATUM1.IsNull then
         begin
          Algquery1.ParamByName('REKENINGDATUM1').AsDate:= ListglobalBWqueryREKENINGDATUM1.Value;
         end;
       Algquery1.ParamByName('REKENINGBEDRAG1').AsFLoat:= ListglobalBWqueryREKENINGBEDRAG1.Value;
       Algquery1.ParamByName('REKENINGNRTEKST1').AsString:= ListglobalBWqueryREKENINGNR1TEKST.Value;
       Algquery1.ParamByName('ALIAS1').AsString:= ListglobalBWqueryALIAS1.Value;
       Algquery1.ParamByName('CH1').AsString:= ListglobalBWqueryCH1.Value;
       Algquery1.ParamByName('FACTUURNUMMER').AsString:= ListglobalBWqueryFACTUURNUMMER.Value;
       Algquery1.ParamByName('KASSANUMMER').AsInteger:= ListglobalBWqueryKASSANUMMER.Value;
       Algquery1.ParamByName('KASSA').AsInteger:= ListglobalBWqueryKASSA.Value;
       Algquery1.ParamByName('VOORSCHOT').AsInteger:= ListglobalBWqueryVOORSCHOT.Value;
       Algquery1.ParamByName('AUTONUMMER').AsInteger:= ListglobalBWqueryAUTONUMMER.Value;
        if not ListglobalBWqueryKASSADATUM.IsNull then
         begin
          Algquery1.ParamByName('KASSADATUM').AsDate:= ListglobalBWqueryKASSADATUM.Value;
         end;
       Algquery1.ParamByName('KASSABEDRAG').AsFLoat:= ListglobalBWqueryKASSABEDRAG.Value;
       Algquery1.ParamByName('BC').AsInteger:= ListglobalBWqueryBC.Value;
       Algquery1.ParamByName('BCBEDRAG').AsFLoat:= ListglobalBWqueryBCBEDRAG.Value;
        if not ListglobalBWqueryBCDATUM.IsNull then
         begin
          Algquery1.ParamByName('BCDATUM').AsDate:= ListglobalBWqueryBCDATUM.Value;
         end;
       Algquery1.ParamByName('VISA').AsInteger:= ListglobalBWqueryVISA.Value;
       Algquery1.ParamByName('VISABEDRAG').AsFLoat:= ListglobalBWqueryVISABEDRAG.Value;
        if not ListglobalBWqueryVISADATUM.IsNull then
         begin
          Algquery1.ParamByName('VISADATUM').AsDate:= ListglobalBWqueryVISADATUM.Value;
         end;
       Algquery1.ParamByName('REKENING').AsInteger:= ListglobalBWqueryREKENING.Value;
       Algquery1.ParamByName('REKENINGNRTEKST').AsString:= ListglobalBWqueryREKENINGNRTEKST.Value;
       Algquery1.ParamByName('REKENINGBEDRAG').AsFLoat:= ListglobalBWqueryREKENINGBEDRAG.Value;
        if not ListglobalBWqueryREKENINGDATUM.IsNull then
         begin
          Algquery1.ParamByName('REKENINGDATUM').AsDate:= ListglobalBWqueryREKENINGDATUM.Value;
         end;
       Algquery1.ParamByName('CH').AsString:= ListglobalBWqueryCH.Value;
       Algquery1.ParamByName('ALIAS').AsString:= ListglobalBWqueryALIAS.Value;
       Algquery1.ParamByName('REFCHECK').AsInteger:= ListglobalBWqueryREFCHECK.Value;
       Algquery1.ParamByName('AANDUIDING').AsString:= ListglobalBWqueryAANDUIDING.Value;
        if not ListglobalBWqueryFACTUURDATUM.IsNull then
         begin
          Algquery1.ParamByName('FACTUURDATUM').AsDate:= ListglobalBWqueryFACTUURDATUM.Value;
         end;
        s:= ''; //initialisatie variabele
        if ListglobalBWqueryAanduiding.Value = 'I' then
         begin
          Algquery1.ParamByName('REFERENTIE').AsString:= 'Initialisatie';
         end;

         Opslagbnummerquery1.Close;
         Opslagbnummerquery1.Prepare;
         Opslagbnummerquery1.Open;
        if ListglobalBWqueryAANDUIDING.Value = 'F' then
         begin
          if Opslagbnummerquery1.Locate('Factuurnummer', ListglobalBWqueryFACTUURNUMMER.Value, []) then
           begin
            if Trim(Opslagbnummerquery1BESTELNUMMER.Value) = '' then
             begin
              s:= Trim(Opslagbnummerquery1KASSANUMMER.Value);
              j:= Length(s) - 1;
              Algquery1.ParamByName('REFERENTIE').AsString:= 'JAWSIE FACT: ' + ListglobalBWqueryFACTUURNUMMER.Value + ' basis K ' + Trim(LeftStr(Opslagbnummerquery1KASSANUMMER.Value, j)) + '; ' + ListglobalBWqueryREFERENTIE.Value;
             end;
            if Trim(Opslagbnummerquery1KASSANUMMER.Value) = '' then
             begin
              s:= Trim(Opslagbnummerquery1BESTELNUMMER.Value);
              j:= Length(s) - 1;
              Algquery1.ParamByName('REFERENTIE').AsString:= 'JAWSIE FACT: ' + ListglobalBWqueryFACTUURNUMMER.Value + ' basis B ' + Trim(LeftStr(Opslagbnummerquery1BESTELNUMMER.Value, j)) + '; ' + ListglobalBWqueryREFERENTIE.Value;
             end;
           end
            else
             begin
              Algquery1.ParamByName('REFERENTIE').AsString:= 'JAWSIE FACT  ' + ListglobalBWqueryFACTUURNUMMER.Value + '; ' + ListglobalBWqueryREFERENTIE.Value;
             end;
         end;
        if ListglobalBWqueryAANDUIDING.Value = 'K' then
         begin
           Algquery1.ParamByName('REFERENTIE').AsString:= 'KASSABONNR  ' + IntToStr(ListglobalBWqueryKASSANUMMER.Value) + '; ' + ListglobalBWqueryREFERENTIE.Value;
         end;
        if ListglobalBWqueryAANDUIDING.Value = 'TI' then
         begin
           Algquery1.ParamByName('REFERENTIE').AsString:= ListglobalBWqueryREFERENTIE.Value;
         end;
       Algquery1.ExecSQL;
       Algquery1.Transaction.Commit;
       ListglobalBWquery.Next;
     Until ListglobalBWquery.Eof;
 finally
  Temp8query1.Close;
  Temp8query1.Prepare;
  Temp8query1.Open;
  Temp8query1.First;
 end;
end;
end;

What might be the problem

thx
Mario
0
Comment
Question by:marioway
  • 4
  • 2
7 Comments
 
LVL 25

Assisted Solution

by:Sinisa Vuk
Sinisa Vuk earned 166 total points
Comment Utility
I saw here a lot of things ....
1. try to set parameters in query like this:
insert into ... (:pREKENINGBEDRAG1,:p....
....
Algquery1.ParamByName('pREKENINGDATUM1').AsDate:=ListglobalBWqueryREKENINGDATUM1.AsDate;

Open in new window

note: I add 'p' before field name and use typed get value: AsDate. Similar for other types: AsInteger, AsFloat,....

2. Use while not  ...eof do loop:
...
while not ListglobalFIquery.Eof do
begin
... Algquery1.ParamByName('pREKENINGDATUM1').AsDate:=ListglobalBWqueryREKENINGDATU  M1.AsDate;
...
  ListglobalFIquery.Next, 
end;
...

Open in new window

... If your query ListglobalFIquery is empty (without records) you are in problem :-)

3. Please, do not commit after each ExecSQL. Start transaction before while loop and do commit after

4. Now, I see that you use already-created-field-approach:
...
Algquery1.ParamByName('DATUMFACT').AsDate:= ListglobalFIqueryDATUMFACT.Value;
..

Open in new window

...where you set ListglobalFIqueryDATUMFACT on design time as prelinked field. I recommend that you do clear all of this fields and use this like:
...
Algquery1.ParamByName('DATUMFACT').AsDate:= ListglobalFIquery.FiledByName('DATUMFACT').AsDate;
...

Open in new window


... this way you can write little more readable and faster code...

...
Algquery1.SQL.Text:= 'INSERT INTO TEMP8 (DATUMFACT, LEVNAAM, FACTUURNUMMER, REFERENTIE, KASSA, AUTONUMMER, ' +
                             'KASSADATUM, KASSABEDRAG, BC, BCBEDRAG, BCDATUM, VISA, VISABEDRAG, VISADATUM, REKENING, ' +
                             'REKENINGNRTEKST, REKENINGBEDRAG, REKENINGDATUM, CH, ALIAS, REFCHECK, AANDUIDING, FACTUURBEDRAGINCL) ' +
                             'VALUES(:DATUMFACT, :LEVNAAM, :FACTUURNUMMER, :REFERENTIE, :KASSA, :AUTONUMMER, :KASSADATUM, ' +
                             ':KASSABEDRAG, :BC, :BCBEDRAG, :BCDATUM, :VISA, :VISABEDRAG, :VISADATUM, :REKENING, :REKENINGNRTEKST, ' +
                             ':REKENINGBEDRAG, :REKENINGDATUM, :CH, :ALIAS, :REFCHECK, :AANDUIDING, :FACTUURBEDRAGINCL)';

while not ListglobalFIquery.Eof do
begin
  for i:=1 to Algquery1ParamCount do
  begin
    Algquery1.Params.Items[i-1].Value := ListglobalFIquery.FiledByName(Algquery1.Params.Items[i-1].Name).Value;
  end;
   Algquery1.ExecSQL;
   ListglobalFIquery.Next;
end;

Open in new window

... with fewer lines you can replace the most code you have.... (this solution is without 'p' prefix)

5. You do not need to close Algquery1 before each insert because you not use it to get records ... and not assign same text to: Algquery1.SQL.Text


... I can write more ..... but please follow these steps first ... When you write much simpler code ... all bugs can vanished or can be easily find....
0
 

Author Comment

by:marioway
Comment Utility
Hi sinisav, I did what you suggested (except the last

 for i:=1 to Algquery1ParamCount do
  begin
    Algquery1.Params.Items[i-1].Value := ListglobalFIquery.FiledByName(Algquery1.Params.Items[i-1].Name).Value;
  end;

(something to look into later, I 'm not an expert :-) ), but the result I get is the the same as before ....

But I've learned some things, and that's als important !
0
 
LVL 36

Assisted Solution

by:Geert Gruwez
Geert Gruwez earned 334 total points
Comment Utility
you have several checks for isnull but don't initialise the parameter in an else or first
sample:
     
if not ListglobalFIqueryDATUMFACT.IsNull then
   Algquery1.ParamByName('DATUMFACT').AsDate:= ListglobalFIqueryDATUMFACT.Value;

Open in new window


should be
Algquery1.ParamByName('DATUMFACT').Value := Null;
if not ListglobalFIqueryDATUMFACT.IsNull then
   Algquery1.ParamByName('DATUMFACT').AsDate:= ListglobalFIqueryDATUMFACT.Value;

Open in new window


the second pass in the repeat the values for the dates can be of the previous record
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 

Author Comment

by:marioway
Comment Utility
   ListglobalBWquery.Close;
    ListglobalBWquery.Params[0].AsDate:= T1;
    ListglobalBWquery.Params[1].AsDate:= T2;
   ListglobalBWquery.Open;
   ListglobalBWquery.First;
    if not ListglobalBWquery.IsEmpty then
     begin


      with Algquery1 do begin
         SQL.Text:= 'INSERT INTO TEMP8 (REKENING1, REKENINGDATUM1, REKENINGBEDRAG1, REKENINGNRTEKST1, ' +
                    'ALIAS1, CH1, FACTUURNUMMER, KASSANUMMER, KASSA, VOORSCHOT, AUTONUMMER, KASSADATUM, ' +
                    'KASSABEDRAG, BC, BCBEDRAG, BCDATUM, VISA, VISABEDRAG, VISADATUM, REKENING, REKENINGNRTEKST, ' +
                    'REKENINGBEDRAG, REKENINGDATUM, CH, ALIAS, REFCHECK, AANDUIDING, FACTUURDATUM, REFERENTIE) ' +
                    'VALUES(:pREKENING1, :pREKENINGDATUM1, :pREKENINGBEDRAG1, :pREKENINGNRTEKST1, ' +
                    ':pALIAS1, :pCH1, :pFACTUURNUMMER, :pKASSANUMMER, :pKASSA, :pVOORSCHOT, :pAUTONUMMER, :pKASSADATUM, ' +
                    ':pKASSABEDRAG, :pBC, :pBCBEDRAG, :pBCDATUM, :pVISA, :pVISABEDRAG, :pVISADATUM, :pREKENING, :pREKENINGNRTEKST, ' +
                    ':pREKENINGBEDRAG, :pREKENINGDATUM, :pCH, :pALIAS, :pREFCHECK, :pAANDUIDING, :pFACTUURDATUM, :pREFERENTIE)';
       While not ListglobalBWquery.Eof do begin
        for i := 0 to ParamCount - 1 do
         begin
           Params[i].Clear;
         end;       
         ParamByName('pREKENING1').AsInteger:= ListglobalBWquery.FieldByName('REKENING1').AsInteger;
         if not ListglobalBWqueryREKENINGDATUM1.IsNull then
          begin
           ParamByName('pREKENINGDATUM1').AsDate:= ListglobalBWquery.FieldByName('REKENINGDATUM1').AsDateTime;
          end;
         ParamByName('pREKENINGBEDRAG1').AsFLoat:= ListglobalBWquery.FieldByName('REKENINGBEDRAG1').AsFloat;
         ParamByName('pREKENINGNRTEKST1').AsString:= ListglobalBWquery.FieldByName('REKENINGNR1TEKST').AsString;
         ParamByName('pALIAS1').AsString:= ListglobalBWquery.FieldByName('ALIAS1').AsString;

Open in new window


Hi, what I did now : I cleared all params at the beginning of the loop, and it works fine now
0
 

Author Comment

by:marioway
Comment Utility
and now I'm gona have a look at

for i:=1 to Algquery1ParamCount do
  begin
    Algquery1.Params.Items[i-1].Value := ListglobalFIquery.FiledByName(Algquery1.Params.Items[i-1].Name).Value;
  end;

:-)
0
 
LVL 36

Accepted Solution

by:
Geert Gruwez earned 334 total points
Comment Utility
are these 2 databases or only 1
if 1 you can write all this code with case statements without having to load each record in delphi and then posting it back

http://www.firebirdsql.org/file/documentation/reference_manuals/reference_material/html/langrefupd25-case.html

if a column is null then just pass the null

for example:
INSERT INTO TEMP8 (REKENING1, REKENINGDATUM1, REKENINGBEDRAG1, REKENINGNRTEKST1, ALIAS1, CH1, FACTUURNUMMER, KASSANUMMER, KASSA, VOORSCHOT, AUTONUMMER, KASSADATUM, KASSABEDRAG, BC, BCBEDRAG, BCDATUM, VISA, VISABEDRAG, VISADATUM, REKENING, REKENINGNRTEKST, REKENINGBEDRAG, REKENINGDATUM, CH, ALIAS, REFCHECK, AANDUIDING, FACTUURDATUM, REFERENTIE) 
SELECT A.REKENING1, A.REKENINGDATUM1, A.REKENINGBEDRAG1, A.REKENINGNRTEKST1, 
A.ALIAS1, A.CH1, A.FACTUURNUMMER, A.KASSANUMMER, A.KASSA, A.VOORSCHOT, A.AUTONUMMER, A.KASSADATUM, A.KASSABEDRAG, A.BC, A.BCBEDRAG, A.BCDATUM, A.VISA, A.VISABEDRAG, A.VISADATUM, A.REKENING, A.REKENINGNRTEKST, A.REKENINGBEDRAG, A.REKENINGDATUM, A.CH, A.ALIAS, A.REFCHECK, A.AANDUIDING, A.FACTUURDATUM, 
CASE 
  WHEN A.AANDUIDING = 'I' THEN 'Initialisatie' 
  WHEN A.AANDUIDING = 'F' THEN 
    (SELECT 'JAWSIE FACT: '||FACTUURNUMMER ||
       CASE WHEN BESTELNUMMER IS NULL 
         THEN ' basis K ' || SUBSTRING(B.KASSANUMMER, 1, CHAR_LENGTH(B.KASSANUMMER)-1

etc/ etc

Open in new window

0
 

Author Closing Comment

by:marioway
Comment Utility
Thx guys fo the solution, I've again learned a lot

Mario
0

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
SQL Update Query 23 78
MarkLogic 1 47
creating threads in delphi 1 52
Is there a canned solution for a custom genealogy website 2 35
The purpose of this article is to demonstrate how we can use conditional statements using Python.
Entering time in Microsoft Access can be difficult. An input mask often bothers users more than helping them and won't catch all typing errors. This article shows how to create a textbox for 24-hour time input with full validation politely catching …
The viewer will learn how to implement Singleton Design Pattern in Java.
The viewer will be introduced to the member functions push_back and pop_back of the vector class. The video will teach the difference between the two as well as how to use each one along with its functionality.

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now