Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

data insert in firebird not correct

Posted on 2013-01-13
7
Medium Priority
?
939 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
7 Comments
 
LVL 28

Assisted Solution

by:Sinisa Vuk
Sinisa Vuk earned 664 total points
ID: 38772571
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
ID: 38776452
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 38

Assisted Solution

by:Geert Gruwez
Geert Gruwez earned 1336 total points
ID: 38777345
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
NFR key for Veeam Agent for Linux

Veeam is happy to provide a free NFR license for one year.  It allows for the non‑production use and valid for five workstations and two servers. Veeam Agent for Linux is a simple backup tool for your Linux installations, both on‑premises and in the public cloud.

 

Author Comment

by:marioway
ID: 38777411
   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
ID: 38777413
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 38

Accepted Solution

by:
Geert Gruwez earned 1336 total points
ID: 38777443
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
ID: 38783533
Thx guys fo the solution, I've again learned a lot

Mario
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Microsoft Access is a place to store data within tables and represent this stored data using multiple database objects such as in form of macros, forms, reports, etc. After a MS Access database is created there is need to improve the performance and…
In this blog post, we’ll look at how using thread_statistics can cause high memory usage.
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…
Suggested Courses

636 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