dBase ignorance

parijs

Active Member
Licensed User
HI Guys,
First a very good Christmas for all.
Second,
I am anyway, started dBase , but comes on the next problem.
I have a visit.db
Table name favo
with columns Mapnaam, pic , keuze , wijk
I want to search with a "text" in the keuze column and store the Mapnaam, pic and wijk in a variable

For now I have this code, but it is not working, I have tried with 1 first ;)

Dim cur As Cursor
Dim m As Map
Dim Name As String
m.Initialize


SQL.Initialize(File.DirRootExternal, "visit.db", False)
cur = SQL.ExecQuery("SELECT pic FROM favo")
cur.Position = 2
Name = m.Get("pic")

Msgbox(Name ,"this is m ?")


Me :sign0104:
 
Last edited:

parijs

Active Member
Licensed User
Thanks Klaus,
But then have I elsewhere a leak.
I get tihs error

CursorIndexOutOfBoundsExceptoin
:Index 0 requested, with a size of 0
 
Upvote 0

klaus

Expert
Licensed User
That means that your database is empty, or no match has been found.
cur.RowCount returns the number of rows found.
Did you have a look at the SQLExample in the Beginner's Guide ?

Best regards.
 
Upvote 0

parijs

Active Member
Licensed User
Klaus yes I have, but speaking English is something else than reading and writing.
But I dive further once

Thans for your help
 
Upvote 0

parijs

Active Member
Licensed User
Unfortunately on this forum I can not find it
Is there anyone who can advise me a good book, about this matter?

:sign0163:
 
Upvote 0

klaus

Expert
Licensed User
Are you shure that your file does exist where you are looking for ?
Are you shure that your database has some records in it ?

Otherwise you could post your project with the database as a zip file (IDE menu File.Export As Zip) and I will have a look at it.

You could have a look at this : SQLite Documents

Best regards.
 
Upvote 0

parijs

Active Member
Licensed User
Hi klaus,
I meant a good book about basic.
The samples here are jumping from china to canada to chili, and I get lost in it.
So I hope to find a way in a book.
I know it's a small problem, and I know thats the blame is on me (not enough knowledge)
After 10 hours searching, I give it a moment

Have a nice Christmas
 
Upvote 0

klaus

Expert
Licensed User
A few months ago, I didn't have any experiene either in SQL. I learnd with examples on the forum and the documents in the link I sent in my previous post.

Best regards.
 
Upvote 0

bees

Member
Licensed User
Klaus yes I have, but speaking English is something else than reading and writing.
But I dive further once

I just saw there is a Dutch forum and lokking into your code you speak Dutch so you might try and explain your question there.

Stephen
 
Upvote 0

Merlot2309

Active Member
Licensed User
Hello Parijs,

Sorry to everyone for writing in Dutch.

Ik heb geen SQL boek (denk ik), maar we moeten er zo ook uitkomen.

Even wat algemene info over sql.
- Ik gebruik de Firefox plugin "SQLite Manager" voor database-onderhoud en soms ook om te testen.
- Nieuwe SQL commando's zoek ik meestal op bij SQL Tutorial
Je kunt de taal op deze site wijzigen in nederlands.

Ben je al verder dan Index 0 requested?

Groeten,
Helen.
 
Upvote 0

parijs

Active Member
Licensed User
Hallo Helen,

Ik was ook niet opzoek naar een boek voor SQL, ik heb bestaande progje zo omgebouwd dat hij de 18 duizend records zelf naar een db overzetten.
Ik vroeg me alleen af hoe ik met een "tekst" in de dbase kan zoeken naar een veld dat overeenkomt met de "tekst"

Groeten,
Zeger
 
Upvote 0

Merlot2309

Active Member
Licensed User
Hallo Zeger,

Onderstaand voorbeeld is voor SQL.

B4X:
Dim ST as SQL
Dim cur As Cursor
Dim Name As String
Dim txtstr as String

   If FirstTime = True Then
      File.Copy(File.DirAssets,"visit.db", File.DirDefaultExternal,"visit.db")
   End If
   
   If ST.IsInitialized = False Then
        ST.Initialize(File.DirDefaultExternal, "visit.db", False)
   End If

cur = ST.ExecQuery2("SELECT * FROM favo WHERE keuze =  ?", Array As String(txtstr))
cur.Position = 0
Name = cur.GetString("pic") 

Msgbox(Name ,"this is m ?")

In dit voorbeeld is "txtstr" de waarde die in een Label, Editbox, Listview, o.d. is ingevoerd.
Met het "*" selecteer je alle velden van de geselecteerde rij.

Groeten,
Helen.
 
Upvote 0

parijs

Active Member
Licensed User
Hallo Helen,

Dit werkt perfect, dank je

Blijven toch nog enkele vraagjes over:

Ben je al verder dan Index 0 requested? ..... zegt me helemaal niets

en dan deze:

If FirstTime = True Then
File.Copy(File.DirAssets,"visit.db", File.DirDefaultExternal,"visit.db")
End If

Word er wel een db file meegestuurd met de .apk naar je phone ?
Voor alsnog download ik hem FirstTime van mijn server
Met de code krijg ik namelijk de error file not found.

Met vriendelijke groet,

Zeger
 
Upvote 0

Merlot2309

Active Member
Licensed User
Hallo Zeger,

Index 0 requested was 'n foutmelding die je eerder gepost had.

Als je de db in je B4A projectdir, in de dir "Files" hebt geplaatst dan wordt de db meegestuurd met de APK (met File.Copy). Staat het bestand ergens anders (op je Server b.v.) dan:
Rechtsboven op deze pagina of op het forum "database server" in het zoekveld invoeren en je ziet ´n aantal topics over dat onderwerp.

Helen.
 
Upvote 0

parijs

Active Member
Licensed User
Daar had ik de db niet staan dus maar even doen, als het mee kan met de apk dan is downloaden overbodig.
Was niet dat er gebruik gemaakt werd van een db op de server hij werd er alleen maar van gedownload.

De index 0 requested error krijg ik nog steeds maar vreemdgenoeg niet iedere keer.

Groet,

Zeger
 
Upvote 0

Merlot2309

Active Member
Licensed User
Hoi,

Soms heb je het B4A project nodig om snel fouten op te sporen, zoals Klaus ook al aangaf. Mogelijk verdwijnt de fout als je dezelfde SELECT code regels ook in de Sub Activity_Resume plaatst?¿?
Android/Java is voor mij soms ook nog 'n raadsel, ik mis dan de logica t.o.v. VB en PHP maar dat kan ook aan mij liggen, ha, ha.

Groeten,
Helen.

Ps. Omdat ik niet weet hoe je de zoektekst selecteert kan de fout mogelijk ook ontstaan omdat er geen enkel record aan het zoekcriterium voldoet. Dan moet je een If .... Else statement toevoegen.
 
Last edited:
Upvote 0

parijs

Active Member
Licensed User
Ben weer wat wijzer geworden vandaag ;)

nog eentje

If FirstTime = True Then
File.Copy(File.DirAssets,"visit.db", File.DirDefaultExternal,"visit.db")
End If

werkt niet, ik weet niet waar de DirAssets voor staat maar de db komt niet in mijn DirDefEx
De db staat wel op mijn sd kaart maar heel ver weg in een 5de subdir

PS heb een log gemaakt maar die laat geen files meer zien na de J (teveel denk ik )
PS. PS opgelost het ging naar de verkeerde DirDefaultExternal


Groet en bedankt voor je hulp,

Zeger
 
Last edited:
Upvote 0

bees

Member
Licensed User
De index 0 requested error krijg ik nog steeds maar vreemdgenoeg niet iedere keer.
Zeger

I think the query did not return a record set.
You should always check if you have rows.

B4X:
cur = ST.ExecQuery2("SELECT * FROM favo WHERE keuze =  ?", ArrayAsString(txtstr))
If cur.rowcount > 0 then
  cur.Position = 0
  Name = cur.GetString("pic") 
  Msgbox(Name ,"this is m ?")
Else
  Msgbox(txtstr ,"Not Found")
Endif

HTH

Stephen
 
Upvote 0

Merlot2309

Active Member
Licensed User
Hoi,

Jouw B4A project met o.a. het B4A Source bestand is ergens (op de C-schijf) opgeslagen. Als je die Map opent zie je de Map "Files" en daarin moet je het .db bestand plaatsen.

DirAssets is vrij vertaald zoiets als "behorend tot" en in het geval van programmeren behoort de bron (de db) tot het project.

Groeten,
Helen.
 
Upvote 0
Top