I have a table with invoice numbers. These are stored for multiple users.
I have developed code that generates a new Invoice Number and it updates the Invoice Table correctly.
The problem is that I can't send the new invoice number back to local storage. I have attempted to do this with the last line which doesn't work. (see below)
Any suggestions?
Mike
select * from invnbr2 where Userno = {{localStorage.values.Userno}};
SELECT @invnbrnext:=max(invnbr) FROM invnbr2;
SELECT @invnbrnextp:=@invnbrnext + 1;
INSERT INTO invnbr2 (Userno, invnbr) VALUES ({{localStorage.values.Userno}}, @invnbrnextp);
localStorage.setValue ("minvnumber", @invnbrnextp);
It depends on the database.
If you're using RetoolDB you add a RETURNING
clause into your insert. I can't link directly to it but search for that word here. PostgreSQL: Documentation: 16: INSERT
Then you'd just reference yourQuery.data
for the value.
i think @kschirrmacher means something like this:
SELECT @invnbrnext:=max(invnbr) FROM invnbr2;
SELECT @invnbrnextp:=@invnbrnext + 1;
INSERT INTO invnbr2 (Userno, invnbr) VALUES ({{localStorage.values.Userno}}, @invnbrnextp);
RETURNING *
then you can add a Success event handler:

I don't know what your query will return so i just used a placeholder. you'll need to change myQuery
and mostlikely the .invnbrnextp
also
I am not sure about the code in the Success handler.
I am attaching a screen capture. This doesn't seem to work.
Mike

I have worked a little further with this.
I have a particular variable as circled in the first screen capture. This value saves to the table just fine.
The second capture shows the script in the Success attempting to put this same value in local storage and this part does not work. If I replace the circled value with say 55, this value goes to local storage just fine. The problem seems to be that the circled value does not retain as I go to the Success section.
Any thoughts?
Mike

You still need to implement the returning
clause, as outlined above, in the query in order for it to return the data that you want.
Then you'll use nameOfYourQueryHere.data.invnbr[0]
as your value when you set your localStorage value.

is MYQUERY
what you named the query you've added this Success event handler to? If so, you'd actually want to use MYQUERY.data.invnbrnextp
, but if that doesn't work could you attach a screenshot of the State for MYQUERY? to get there:

after you click 'View State' you should see something like this

if the data
property is undefined
for you like it is in this pic, just run MYQUERY once and it'll populate to looks something like:

the yellow warning squiggly line is likely saying something like: value undefined in MYQUERY. it's saying the object named MYQUERY doesn't have a property named invbrnextp. which it's right. MYQUERY does have a property named data
though which is also an object and this one MIGHT have the property your looking for.
{
MYQUERY: {
data: {
invnbrnextp: your_value,
}
}
}
OK, let me show you where I am now.
The first screen shot shown the initial query which has the RETURNING * clause. This generates an error message as shown.
The second shows the SUCCESS code.
The third screen shows the query that is in the Success Screen.
None of this works, but hopefully I am getting closer.
Mike
Screen 1
Screen 2

Screen 3
Remove the ;
between the insert values and the returning *
.
Yes, removing the ; at the end of the second last line eliminates the error message and the table updates properly.
But nothing happens in the Success Event which is supposed to return the minvnumber
value back to localStorage.
Mike
Try getinvnbr3.data.invnbr[0]
as the value. The variable that you're setting is not available in the response so referencing it in the success handler won't work.
The value that goes to localStorage is the text "getinvnbr3.data.invnbr[0]", the result of the query does not get sent.
Mike
Do you have it in brackets? {{getinvnbr3.data.invnbr[0]}}
If I add brackets, I get an error message as below.
If I run it anyway, nothing is returned to localStorage.
Mike

@mdsmith1 Can you share what the data property of the getinvnbr3
query is after it is run? This is liekly just a syntax issue.
Joe:
I guess I did not close this out. With help from this group, I came up with some very complicated code that solves this problem.
So I am out of the woods.
Thank you for reaching out.
Mike
1 Like