Problem caused by lack of delete function in local DB and solution?


Please tell me a good solution
1.Best if there is a way to delete a specific row in local DB
2.Isn’t there a way to import csv file Without using local DB(Something like an App Inventor file import feature ??)
3. If I do it like the picture, it takes one minute to complete. But if I have to do it this way …
How should I store it only once? How can I store it only once?
New store every time the screen is opened
How can I make it run only once when I run the app for the first time?


The app I want is to study English words. There are 12000 words in A DB. Read three words a day. Get the words you learned in A DB and move them to B DB. What is a good implementation of this?

It’s a very difficult confusion right now.

Do you know how to eat an elephant?
You take many small bites.

That is perhaps what you should be doing.
Instead of having one massive 12000 word database, have 100 smaller database of 120 words each. Then when you load the first one locally, you are good for 40 days. On the 41st day, you load database #2 that will be local until the 81st day, when the 3rd bank of 120 words will be loaded.

If you put 12000 words in local dB, you will be able to read and save them
Immediately to storage when you run the app. This is a big advantage. But it is useless just because there is no delete function. In the end, the way I found out is that I need to move from local DB to local storage. However, this task takes a huge amount of time when you run the app. Perhaps even if you cut 120 words. Moreover, as a beginner, I can’t imagine how to do it. What should I really do?

That means instead of getting sub-list from “1 to last”, you get from “(N120) to (N120)+120”, with N being 0, 1, 2, etc, i.e. “day-1”.

Then you only transfer 1/100 of the database to local storage, which should take 1/100 of the time to load.

I’m a thunkable beginner and I don’t really understand what you said.
I would really appreciate it if you could attach a sample coding sample shot.

Look at the first screen shot in your first posting.
You see that you were trying to get 3 columns out?
How did you create that “Local_DB3” and fill it up?

Show us the blocks on filling it…

It doesn’t have a block.
Local DB3 was populated manually.

I’ve written 12000 words in Google Spreadsheets. I copied it and pasted it into a thunkable local DB3 spreadsheet.

So there are no blocks.

OK, so getting back to your original questions

1- why do you need to delete a row in local DB?

2- file access, including for coma separated values, is missing in X. You may be able to cobble something that approximates it using JSON and objects, but how to store and retrieve it would apparently require file access, so…

It seems you depends on features that Thunkable decided were not ‘important’ to duplicate from Classic to X…

These two threads should really be merged. We’re having to repeat ourselves because 1/2 the information is in each thread. Here’s the other one: Possible ways to thunkable, like appinventor's tinyDB get tag command

@mom7667yafy I hesitate to say this because the developer community I came from with GameSalad prohibited discussing other game development tools in its forums but I read the Community Guidelines here and I don’t see anything about it so…

You might look into GameSalad. While Thunkable has some really nice features that GameSalad does not – one of them being the ability to sync to Airtable, which I really like – GameSalad has a robust built-in local database (called “tables”). It’s relatively easy to import a csv and then to manipulate it by adding or deleting rows. It’s fast and bug-free. And cloning (“spawning”) actors is much faster as well. Again, there are reasons I’ve started to move on from GameSalad to Thunkable but it’s also a very good tool.

You’ll see me on those forums as @tatiang as well. I’m a moderator there. But I’m not here to advertise another tool. I want to engross myself in Thunkable and hopefully sing it’s praises!

As far as I know, Local DB does not save data between application launch sessions. This is not a database component, but a simple table with truncated functionality.

I have a screen with 20,000 words and I don’t see any problems either in downloading them or in finding words.

It is not necessary to use Local DB and AirTable to copy data from Excel and similar tables to List. You can do this directly if you have an understanding of what a CSV format is.

You’re right. I was able to copy and paste a 12,000 word csv file into a list. And then retrieve individual words. And I’m sure I could also delete them by index #.

Here is how I solved it with lots of help.
1.
Paste 12000 documents created with Google Spreadsheet into a spreadsheet in your local DB.
2.
Each column of the local DB is stored as a list as a variable.
3.
Using lists imported from local DB
The word is the key to local storage and the value is the meaning of the word.
This is used as a dictionary to search for words.
4.
Learning is done using lists containing words. Words checked for deletion are deleted from the list.

Store this list directly on your local storage.
This is a list of unknown words to learn.
Deleted words are known words. Keep it in local storage.
5.
From the list of unknown words stored in the list, I only import words to study today.

I implemented it first in the same way.
It’s a bit slow.
Let me know if there is a better way.

Your initial example works slowly because you use an app variable block in a loop that runs 1000 times slower than real variables from function parameters.

Which part is slow?

Here’s a demo that chooses 5 new words and removes them from the master list:

https://x.thunkable.com/copy/7281d4c94805a89fd606bbba43394e8e

It works quickly but I haven’t added saving yet.

Wow!
Thank you.
I had to do a random word problem and it helps. It’s a good reference.

The list is then loaded into local storage and reloaded, which is a bit slow.
It’s not seriously slow.

When I quickly pass to the next word, I may get an error if I move to the next screen before loading the word.
This slight slowdown is likely to reduce the app’s maturity.

But why are you loading individual words? I would think you would load the master list once, then just keep picking five new words from the list (as I do in my demo). That would be much faster.

Creating dictionary-storage takes time. But I only need to do it once, so I’m fine.
Put all 12000 words in the A list, and then extract the words 1 through 5 into the B list.

right words are deleted from the 12000 word list.
And save it directly to local storage.

Are there any inefficiencies?

Shows word 1 and word 2 in a list of 5 words. There are only 5 words, but if I quickly pass to the next word, an error may occur.
Is it by retrieving the phonetic symbols and meanings from the dictionary? I don’t know why. A very slight slow down will cause an error.