3.20.1 has broken my Application

Post

Posted
Rating:
#1 (In Topic #1410)
Enthusiast
AndyGable is in the usergroup ‘Enthusiast’
 Hi All,

I was wondering if someone could check something for me

I have installed 3.20.1 and now when ever i use a database function that is processed via my server for example

in my query to the database if I use Replace(Replace(username, ',,',','),'''','''') as username or "LPAD(userid, 4, '0') as  userid, "

I get a error saying the field does not exist and also I can not for some reason if I set a form label before displaying it it will not show in the workspace

I am setting the labMessage on frmExitOk to say "Confirm your request to exit back to the sales mode" and then I show the form with
frmbackground.workspace1.add(frmExitOk,0) and this has worked fine for all updates until 3.20.1 now i just have my app disable the menu form (as it should) but not show the frmExitOk.

Have I done something to my install or has anyone else seem this issue? I did notice my gb.db.mysql was not enabled so when I selected gb.db.mysql2 that was when the issues started.

I have reverted back to 3.19.5 until I can sort this issue (love the new look for the IDE by the way I can not wait to use it)
Online now: No Back to the top

Post

Posted
Rating:
#2
Avatar
Regular
thatbruce is in the usergroup ‘Regular’
Andy,
In the first place I suggest you start considering getting rid of mySQL and using a decent database, postgres or at least mariadb. You will have less db problems.
Secondly, while your description of the problem is better than average, it is somewhat useless without the code. For example,
           <COLOR color="#FF0000">Replace(Replace(username, ',,',','),'''','''') as username or "LPAD(userid, 4, '0') as userid, "</COLOR>
means absolutely nothing without the code context.

Online now: No Back to the top

Post

Posted
Rating:
#3
Enthusiast
AndyGable is in the usergroup ‘Enthusiast’

thatbruce said

Andy,
In the first place I suggest you start considering getting rid of mySQL and using a decent database, postgres or at least mariadb. You will have less db problems.

Hi thatbruce

I am using MariaDB and the actual database side is fine the issues I am finding was when I moved to the new gb.db.mysql2 (when installed 3.20.1)

This is my function that signs in a cashier into the Point of sale

Code (gambas)

  1. Public Procedure FindCashier(CashierNumber As String, CashierPassword As String)
  2.    
  3.     Dim UserDataResult As Result
  4.     Dim $Query As String = Null
  5.    
  6.     $Query &= "Select "
  7.     $Query &= "userid, "
  8.     $Query &= "userpassword, "
  9.     $Query &= "replace(replace(username, ',,',','),'''','''') as username, "
  10.     $Query &= "replace(replace(usernameposrecipit, ',,',','),'''','''') as usernameposrecipit, "
  11.     $Query &= "changepassword, "
  12.     $Query &= "useraccesslevel, "
  13.     $Query &= "restricrefundvalue, "
  14.     $Query &= "refundvalue, "
  15.     $Query &= "usercanoverridelockout, "
  16.     $Query &= "discountlockout, "
  17.     $Query &= "discountvalue, "
  18.     $Query &= "overridediscountlock "
  19.     $Query &= "from usertable "
  20.     $Query &= "where userid='" & CashierNumber & "' and userpassword='" & CashierPassword & "';"
  21.    
  22.     ' ConnectToDatabase
  23.         UserDataResult = Global.$DBCon.Exec($Query)
  24.    
  25.     If UserDataResult.Available = True Then
  26.         Select Case UserDataResult!changepassword
  27.             Case "0", "N" ' No
  28.                 frmBackground.labCashierNumber.Text = UserDataResult!userid
  29.                 frmBackground.labCashierName.Text = UserDataResult!username
  30.                           global.CashierNamePrint = UserDataResult!usernameposrecipit
  31.                       global.CashierAcceessLevels = UserDataResult!useraccesslevel
  32.                 bootup.LoadTransactionNumber
  33.                 frmbackground.labTransNumber.Caption = Format(Global.TransactionNumber, "000000")
  34.                
  35.                 frmBackground.labCashierNumber.Visible = True
  36.                 frmBackground.labCashierName.Visible = True
  37.                 frmbackground.labTransNumber.Visible = True
  38.                
  39.                 global.CashierNumber = UserDataResult!userid
  40.                 Global.AgeValueLastUsed = "999"
  41.                
  42.                 If frmbackground.Workspace1.Count > 0 Then frmbackground.Workspace1.CloseAll
  43.                 ProductGridControl.ClearGrid
  44.                 Global.SaleMode = "Sale"
  45.                
  46.                 If global.DisplayMiniDOBScreen = "Yes" Then global.ShowMiniDOBOnScreen
  47.  
  48.                 global.CustomerDisplayFunction("SendCashierName")
  49.  
  50.                 UserDataResult = Null
  51.                 frmBackground.Workspace1.Add(frmSalescreen, 0)
  52.                
  53.             Case "1", "9", "Y"  ' Password needs to be changed
  54.                 frmCashierChangePassword.labCashierName.Caption = UserDataResult!username
  55.                 frmCashierChangePassword.labCashierNumber.Caption = UserDataResult!userid
  56.                
  57.                 UserDataResult = Null
  58.                 MenuDisplay.ClearMenu
  59.                 If frmbackground.Workspace1.Count > 0 Then frmbackground.Workspace1.CloseAll
  60.                 frmBackground.Workspace1.Add(frmCashierChangePassword, 0)
  61.         End Select
  62.     Else
  63.         Dim ErrorMessage As String = Null
  64.         ErrorMessage &= "Sorry the Password you have entered" & gb.CrLf
  65.         ErrorMessage &= "does not seem to match the one in" & gb.CrLf
  66.         ErrorMessage &= "the database" & gb.CrLf
  67.         ErrorMessage &= "Please check and try again"
  68.        
  69.         With frmErrorMessage
  70.             .labFormName.Caption = "FrmSignOn_Password"
  71.             .labSystemMessage.text = ErrorMessage
  72.         End With
  73.        
  74.                 UserDataResult = Null
  75.         MenuDisplay.ClearMenu
  76.         If frmbackground.Workspace1.Count > 0 Then frmbackground.Workspace1.CloseAll
  77.         frmBackground.Workspace1.Add(frmErrorMessage, 0)
  78.     End If

In 3.19.5 this works fine but when I run it in 3.20.1 i get a error saying field username is not selected.

This is the function I have for displaying all users in the system on the edit screen

Code (gambas)

  1. Public Sub PopulateGrid_Users()
  2.   With frmUserMenu.GridViewCurrentUsers
  3.         .Columns.Count = 3
  4.  
  5.         .Columns[0].Width = 100
  6.         .Columns[1].Width = 200
  7.         .Columns[2].Width = 200
  8.            
  9.         .Columns[0].Text = "User\nID"
  10.         .Columns[1].Text = "User\nName"
  11.         .Columns[2].Text = "User Recipit\nName"
  12.            
  13.         .Columns[0].Alignment = Align.BottomLeft    'User ID
  14.         .Columns[1].Alignment = Align.BottomLeft    'User Name
  15.         .Columns[2].Alignment = Align.BottomLeft    'Recipit Name
  16.            
  17.         .Rows.Count = 0
  18.         .Rows.Resizable = False
  19.         .Columns.Resizable = False  
  20.         .Header = GridView.Horizontal
  21.         .ScrollBar = GridView.None      
  22.         .SetFocus
  23.     End With  
  24.    
  25.      Global.BackOfficeQuery = Null
  26.     Global.BackOfficeQuery &= "select "
  27.     Global.BackOfficeQuery &= "LPAD(userid, 4, '0') as  userid, "
  28.     Global.BackOfficeQuery &= "replace(replace(username, ',,',','),'''','''') as username, "
  29.     Global.BackOfficeQuery &= "replace(replace(usernameposrecipit, ',,',','),'''','''') as usernameposrecipit "
  30.     Global.BackOfficeQuery &= "from usertable "
  31.     Global.BackOfficeQuery &= "where usertype='P' "
  32.     Global.BackOfficeQuery &= "order by userid ASC;"
  33.    
  34.         Global.BODataResult = Global.$DBBackOfficeCon.Exec(Global.BackOfficeQuery)  
  35.    
  36.         frmUserMenu.GridViewCurrentUsers.Rows.Count = Global.BODataResult.Count
  37.    
  38.         If Global.BODataResult.Available = True Then  
  39.             Global.RowCount = 0
  40.        
  41.             For Each Global.BODataResult
  42.                 frmUserMenu.GridViewCurrentUsers[Global.RowCount, 0].Text = Global.BODataResult!userid  
  43.                 frmUserMenu.GridViewCurrentUsers[Global.RowCount, 1].Text = Global.BODataResult!username
  44.                 frmUserMenu.GridViewCurrentUsers[Global.RowCount, 2].Text = Replace(Global.BODataResult!usernameposrecipit, gb.crlf, "")
  45.                 Global.RowCount += 1
  46.             Next
  47.         End If
  48.        
  49.         If Global.RowCount > 0 Then frmUserMenu.GridViewCurrentUsers.Select(0, 1) ' Set to the First row

the ide errors out on the Global.BODataResult!userid line and says again field not found
Online now: No Back to the top

Post

Posted
Rating:
#4
Guru
BruceSteers is in the usergroup ‘Guru’
 Sorry I can't really help as i know nothing about database usage but I couldn't help notice this command syntax used twice looks wrong…

replace(replace(username, ',,',','),'''','''')

I see the inner replace is replacing 2 comma ,, for 1 ,
but the outer one seems to replace '' with the same ''
Online now: No Back to the top

Post

Posted
Rating:
#5
Avatar
Enthusiast
sadams54 is in the usergroup ‘Enthusiast’
not sure if this helps, I use alot of mysql or mariadb as it is now called. I notice you are checking database directly in the code. This leaves alot of room for problems to spread. I wrote a class and called it mysql.  inside it has all the basic functions. This keeps all the mysql communication in one place and if you have problems only one place to fix.
I have a ReadData, WriteData, ChangeData, deletedata etc….. I do not have 3.20 I am on 3.19 so I hope the issue does not hit me as this is from my POS. However I think this approach will make things easier for you.

this is my read data

Code

Public Function GetData(TableName As String, FieldList As String, Query As String) As String
  
  '' gets data matching query,
  '' Fieldlist is listed with fields separated by comma
  '' data returned as string fields separated by cfielddelimiter in same order as fieldlist
  '' each record separated by crecorddelimiter
  '' query should include only the raw query data example 'Field1 > 18'
  ''
  Dim Con As New Connection
  Dim QStr As Result
  Dim QResult, TQuery As String
  Dim X, Y As Integer
  
  Con.Host = DBHost            'global variable loaded at program start
  Con.Login = DBLogin   'global variable loaded at program start
  Con.Port = DBPort   'global variable loaded at program start
  Con.Name = DBName   'global variable loaded at program start
  Con.Type = "mysql"   
  Con.Password = DBPassword   'global variable loaded at program start
  
  Try
  Con.Close
  Con.Open
  TQuery = "SELECT " & FuncLib.ReplaceString(FieldList, FuncLib.cFieldDelimiter, ",") & " FROM " & TableName & " WHERE " & Query
    QSTR = Con.Exec(TQuery)
    
  For Y = 1 To QSTR.Count
    
    For x = 1 To FuncLib.HowManyFields(FieldList, FuncLib.cFieldDelimiter)
      QResult = QResult & QSTR[FuncLib.GetFieldByPlace(FieldList, FuncLib.cFieldDelimiter, x)] & FuncLib.cFieldDelimiter
    Next
    QResult = FuncLib.RemoveLastChar(QResult) & FuncLib.cRecordDelimter
    QSTR.MoveNext
  Next
  Return FuncLib.RemoveLastChar(QResult)
  Catch
   ' Message("Unable to execute command  " & Error.Text)
    Return ""
  
End
Online now: No Back to the top

Post

Posted
Rating:
#6
Avatar
Regular
thatbruce is in the usergroup ‘Regular’
I have had a good look through that code and I can't see anything wrong with it.  :!:
I agree with BruceS though, what are you trying to do with that outer replace? O'Reilly->O''Reilly?
Where (which line# as posted) does the error occur?
I can only suggest setting db.debug=true just before the Exec at line 23 and show us the actual query that is being sent for execution.
b

Online now: No Back to the top

Post

Posted
Rating:
#7
Avatar
Regular
thatbruce is in the usergroup ‘Regular’
BTW I am getting the opinion that mariadb prefers escaping single quotes as "\'" as per their Quote() function.
https://mariadb.com/kb/en/quote/
b

Online now: No Back to the top

Post

Posted
Rating:
#8
Enthusiast
AndyGable is in the usergroup ‘Enthusiast’

thatbruce said

I have had a good look through that code and I can't see anything wrong with it.  :!:
I agree with BruceS though, what are you trying to do with that outer replace? O'Reilly->O''Reilly?
Where (which line# as posted) does the error occur?
I can only suggest setting db.debug=true just before the Exec at line 23 and show us the actual query that is being sent for execution.
b

The outer replace should do this

O''Reilly->O'Reilly? (This is the one that is displayed)
And the error is when I try to read the data from the field the ide says the field can not be found but I can see the field in the collection (but it has a . In front of it unlike the others that are just the field name)

I will do the debug thing once I am back at the office this evening and post that here
Online now: No Back to the top

Post

Posted
Rating:
#9
Avatar
Regular
thatbruce is in the usergroup ‘Regular’
OK, in your second bit of code I see at line 27

Code (gambas)

  1. Global.BackOfficeQuery &= "LPAD(userid, 4, '0') as  userid, "
which has 2 spaces before the column alias, so the debug query we want is the one at line 44 there!


?Maybe it's not really a space?
Anyway maybe?

Online now: No Back to the top

Post

Posted
Rating:
#10
Enthusiast
AndyGable is in the usergroup ‘Enthusiast’
Hi Everyone,

Well I have had a few days of fun (not)

I have found out I can not install 3.20.1 on a i386 machine as it does not support the sse3-support package

so I think I am stuck with 3.19.5 for the i386 machines (and I have a lot of them) unless someone knows how I can install it on my
i386 install (ibm X31 laptop with 2GB RAM and a Intel 1.7GHz CPU)

thatbruce said

OK, in your second bit of code I see at line 27

Code (gambas)

  1. Global.BackOfficeQuery &= "LPAD(userid, 4, '0') as  userid, "
which has 2 spaces before the column alias, so the debug query we want is the one at line 44 there!
?Maybe it's not really a space?
Anyway maybe?

And as thatbruce pointed out I did not see the extra spaces they may not have been a issue but i cleaned them all up as well (I found 49 entries like that) and to make sure I am getting what I want in the SQL command I am using this

Code (gambas)

  1. Dim SQLFun as string = "replace(replace(username, ¬,,¬,¬,¬),¬''¬,¬'¬)"
  2. SQLFun = Replace(SQLFun ,"¬",Chr(34))

and it seems to be working fine still on the 3.19.5 version


I just tried to install 3.20.1 on my i386 machine but when I try to run the program I get

Code

[gb.gui.base].Splitter.DoLayout.239 #26: Division by zero
[gb.gui.base].Splitter.DoLayout.239
[gb.gui.base].Splitter.Layout_Write.338
[gb.gui.base].Splitter.MinSize_Write.525
FDbugInfo._new.57
FSearch._new.44
FMain._new.65
Project.Main.484 ?

Think I will just stick to 3.19.5 for now
Online now: No Back to the top

Post

Posted
Rating:
#11
Avatar
Enthusiast
sadams54 is in the usergroup ‘Enthusiast’
 mariadb is case sensitive… so a field named BigStuff  will throw an error if you access it as  Bigstuff,  missing the capital S makes a difference as will a period. You may want to rename that field if it is not too much trouble. also if you use quotes on something it will throw the entire thing off. I wrote a sub that catches the strange characters like a quote and changes it to something else unused to store and switches it back when read. First thing is centralize all the database access to a single class so you can control it better.
Online now: No Back to the top

Post

Posted
Rating:
#12
Enthusiast
AndyGable is in the usergroup ‘Enthusiast’

sadams54 said

mariadb is case sensitive… so a field named BigStuff  will throw an error if you access it as  Bigstuff,  missing the capital S makes a difference as will a period. You may want to rename that field if it is not too much trouble. also if you use quotes on something it will throw the entire thing off. I wrote a sub that catches the strange characters like a quote and changes it to something else unused to store and switches it back when read. First thing is centralize all the database access to a single class so you can control it better.

I have found i type a few feilds in LikeThis so I have changed them

I assume 3.20.1 has a updated Database error handling as 3.19.5 allowed me to use the LikeThis Feilds names (I am running on my central database server of mariadb)

PLEASE can someone confirm if I make a Program in 3.20.1 on a AMD64 machine will it run with no issues on a I386 (32 bit machine)

I have 100 32bit computers that run my Debain software and I can not and will not tell customers they need to upgrade to 64bits just to run some back office applications (This was the reason I move to Debain in the first place so older hardware can still be used)

When I tryed to install 3.20.1 on my IBM ThinkPad X31 it kept saying sse_Support is not enabled on the device
Online now: No Back to the top

Post

Posted
Rating:
#13
Guru
BruceSteers is in the usergroup ‘Guru’
I do not have a 32bit machine to test if it works.

if you have 100 can't you test it on one of them ?

I will say to your question that no, the is no guarantee if sse is a requirement.

google ai said

SSE support in Debian is handled by packages that check for the presence of Streaming SIMD Extensions (SSE) on a processor. These packages refuse to install on processors that don't have the required SSE features.
How it works

    The isa-support family of packages check for SSE features like SSE3.
    If a processor doesn't have the required SSE features, the package won't install.
    This allows package dependencies to handle ISA requirements.

So it seems if the 32bit machines do not support sse then sse packages will not install.

you can get cpu info by installing and running cpuid, that will let you know if the cpu supports sse

Code

$ cpuid -1|grep SSE

      SSE extensions                         = true
      SSE2 extensions                        = true
      PNI/SSE3: Prescott New Instructions     = true
      SSSE3 extensions                        = true
      SSE4.1 extensions                       = true
      SSE4.2 extensions                       = true
         SSE state                            = true
         XCR0 supported: SSE state           = false

my guess is the packages do not exist on those systems because they do not support sse3.

Debian -- Package Download Selection -- sse3-support_15.1_i386.deb

But why the updated gambas suddenly demands it i do not know.
Online now: No Back to the top

Post

Posted
Rating:
#14
Avatar
Administrator
gbWilly is in the usergroup ‘unknown’

AndyGable said

[
PLEASE can someone confirm if I make a Program in 3.20.1 on a AMD64 machine will it run with no issues on a I386 (32 bit machine)

I have 100 32bit computers that run my Debain software and I can not and will not tell customers they need to upgrade to 64bits just to run some back office applications (This was the reason I move to Debain in the first place so older hardware can still be used)

When I tryed to install 3.20.1 on my IBM ThinkPad X31 it kept saying sse_Support is not enabled on the device

I reported this problem in this thread on mailing list.
It has been fixed and I have tested the fix on both Debian 11 and Debian 12 i386.
I did create binary packages for i386 on both above systems, made a file repo and installed the above fixed master version from that repo. It installs and works.
Benoit confirmed that the fix will be in the 3.20.2 release.

On possible mariadb trouble:
Gambas 3.20.x uses the new  gb.db2 and db2 family of components for it's IDE dependency.
So, if things behave strange in your project, make sure to install gambas3-gb-db and its db family (this does NOT happen default probably) and make your programs explicitly depend on these. That might solve some issues.

gbWilly
- Gambas Dutch translator
- Gambas wiki content contributor
- Gambas debian/ubuntu package recipe contributor
- GambOS, a distro for learning Gambas and more…
- Gambas3 Debian/Ubuntu repositories


… there is always a Catch if things go wrong!
Online now: No Back to the top

Post

Posted
Rating:
#15
Enthusiast
AndyGable is in the usergroup ‘Enthusiast’

gbWilly said

AndyGable said

[
PLEASE can someone confirm if I make a Program in 3.20.1 on a AMD64 machine will it run with no issues on a I386 (32 bit machine)

I have 100 32bit computers that run my Debain software and I can not and will not tell customers they need to upgrade to 64bits just to run some back office applications (This was the reason I move to Debain in the first place so older hardware can still be used)

When I tryed to install 3.20.1 on my IBM ThinkPad X31 it kept saying sse_Support is not enabled on the device

I reported this problem in this thread on mailing list.
It has been fixed and I have tested the fix on both Debian 11 and Debian 12 i386.
I did create binary packages for i386 on both above systems, made a file repo and installed the above fixed master version from that repo. It installs and works.
Benoit confirmed that the fix will be in the 3.20.2 release.

On possible mariadb trouble:
Gambas 3.20.x uses the new  gb.db2 and db2 family of components for it's IDE dependency.
So, if things behave strange in your project, make sure to install gambas3-gb-db and its db family (this does NOT happen default probably) and make your programs explicitly depend on these. That might solve some issues.

That's great news about the fix when I installed Gambas from source the sse_support was part of one of packages that get installed for building it.

Once 3.20.2 is available on the website I shall try that.
Online now: No Back to the top

Post

Posted
Rating:
#16
Avatar
Administrator
gbWilly is in the usergroup ‘unknown’

AndyGable said

That's great news about the fix when I installed Gambas from source the sse_support was part of one of packages that get installed for building it.

Once 3.20.2 is available on the website I shall try that.

Just so we are on the same page:

Code

[gb.gui.base].Splitter.DoLayout.239 #26: Division by zero
[gb.gui.base].Splitter.DoLayout.239
[gb.gui.base].Splitter.Layout_Write.338
[gb.gui.base].Splitter.MinSize_Write.525
FDbugInfo._new.57
FSearch._new.44
FMain._new.65
Project.Main.484 ?
This above issue has been fixed. I have not encountered the sse support problem.

I would attach a i386 file repository for debian11 and 12. It installs the 3.20.90 (master) version with this fix, so you could test on one of the systems. But it is not allowed as attachment, so I can't.

gbWilly
- Gambas Dutch translator
- Gambas wiki content contributor
- Gambas debian/ubuntu package recipe contributor
- GambOS, a distro for learning Gambas and more…
- Gambas3 Debian/Ubuntu repositories


… there is always a Catch if things go wrong!
Online now: No Back to the top

Post

Posted
Rating:
#17
Enthusiast
AndyGable is in the usergroup ‘Enthusiast’

BruceSteers said

you can get cpu info by installing and running cpuid, that will let you know if the cpu supports sse

Code

$ cpuid -1|grep SSE
[/quote]

Well i ran the CPU ID command on my IBM ThinkPad X31 and this is the result

[code]$ cpuid -1|grep SSE

      SSE extensions                         = true
      SSE2 extensions                        = true
      PNI/SSE3: Prescott New Instructions     = false
      SSSE3 extensions                        = false
      SSE4.1 extensions                       = false
      SSE4.2 extensions                       = false
         SSE state                            = false
         XCR0 supported: SSE state           = false[/code]

The Packages that seem to need SSE_Support are Web packages does this mean I can not move to 3.20.2 when it comes out?
Online now: No Back to the top

Post

Posted
Rating:
#18
Enthusiast
AndyGable is in the usergroup ‘Enthusiast’

BruceSteers said

Code

$ cpuid -1|grep SSE

Well i ran the CPU ID command on my IBM ThinkPad X31 and this is the result

Code

$ cpuid -1|grep SSE

      SSE extensions                         = true
      SSE2 extensions                        = true
      PNI/SSE3: Prescott New Instructions     = false
      SSSE3 extensions                        = false
      SSE4.1 extensions                       = false
      SSE4.2 extensions                       = false
         SSE state                            = false
         XCR0 supported: SSE state           = false
The Packages that seem to need SSE_Support are Web packages does this mean I can not move to 3.20.2 when it comes out?
Online now: No Back to the top

Post

Posted
Rating:
#19
Guru
BruceSteers is in the usergroup ‘Guru’
 you have the supported sse2 packages yes?

isa-support - CPU feature checking - common back-end (maybe)
sse2-support - CPU feature checking - require SSE2

sudo apt install sse2-support

Beyond this I am not sure what the problem might be with gambas.

You may want to report the problem on the bugtracker
Online now: No Back to the top

Post

Posted
Rating:
#20
Avatar
Enthusiast
sadams54 is in the usergroup ‘Enthusiast’
 I don't think you'll have much of a choice. They do not produce 32 bit computers any longer so your clients will have to upgrade to 64bit at some time in the very near future. 32 bit design was outdated and abandoned years ago. This means your clients are using old out of date systems already. 32 bit computers are going the way of the commodore 64 computer.

I think you are best to get them updated before they have a real catastrophe. Move them to 64 bit in a controlled way.
Online now: No Back to the top

Post

Posted
Rating:
#21
Enthusiast
AndyGable is in the usergroup ‘Enthusiast’

sadams54 said

I don't think you'll have much of a choice. They do not produce 32 bit computers any longer so your clients will have to upgrade to 64bit at some time in the very near future. 32 bit design was outdated and abandoned years ago. This means your clients are using old out of date systems already. 32 bit computers are going the way of the commodore 64 computer.

I think you are best to get them updated before they have a real catastrophe. Move them to 64 bit in a controlled way.

My clients are running NCR 7456 base units with 2GB Ram and Debian 11 32bit at the moment.

I know we have to move to 64bit at some point but at the moment the customers machines are working fine (I plan to move to 64bit when the machine start dying)

The other issue I have is I can get a full system from my supplier in Norway and this includes the Dynakey customer display and base unit (but these are 32bit machines unless someone can tell me if it's possible to update the CPU to 64bit)
Online now: No Back to the top

Post

Posted
Rating:
#22
Enthusiast
AndyGable is in the usergroup ‘Enthusiast’
Does anyone know what

Division by zero (#26).

[gb.gui.base].Splitter.DoLayout.239

I've updated to 3.20.1 but not installed qt6 as that was what making my issues on a 32bit machine.

I ran the command gambas3 in the terminal and I have the following show

Code

(org.gambas.7117:7117): GLib-GIO-CRITICAL **: 23:40:26.126: g_dbus_connection_emit_signal: assertion 'G_IS_DBUS_CONNECTION (connection)' failed

(org.gambas.7117:7117): GLib-GIO-CRITICAL **: 23:40:26.128: g_dbus_connection_emit_signal: assertion 'G_IS_DBUS_CONNECTION (connection)' failed

(org.gambas.7117:7117): GLib-GIO-CRITICAL **: 23:40:26.184: g_dbus_connection_emit_signal: assertion 'G_IS_DBUS_CONNECTION (connection)' failed

(org.gambas.7117:7117): GLib-GIO-CRITICAL **: 23:40:26.237: g_dbus_connection_emit_signal: assertion 'G_IS_DBUS_CONNECTION (connection)' failed

(org.gambas.7117:7117): GLib-GIO-CRITICAL **: 23:40:26.238: g_dbus_connection_emit_signal: assertion 'G_IS_DBUS_CONNECTION (connection)' failed

(org.gambas.7117:7117): GLib-GIO-CRITICAL **: 23:40:26.240: g_dbus_connection_emit_signal: assertion 'G_IS_DBUS_CONNECTION (connection)' failed
[gb.gui.base].Splitter.DoLayout.239: #26: Division by zero
[gb.gui.base].Splitter.DoLayout.239 [gb.gui.base].Splitter.Layout_Write.338 [gb.gui.base].Splitter.MinSize_Write.525 FDebugInfo._new.57 FSearch._new.44 FMain._new.65 Project.Main.484 ?

If someone does know how I can fix this please let me know.
Online now: No Back to the top

Post

Posted
Rating:
#23
Avatar
Administrator
gbWilly is in the usergroup ‘unknown’

AndyGable said

Does anyone know what

Division by zero (#26).

[gb.gui.base].Splitter.DoLayout.239

I've updated to 3.20.1 but not installed qt6 as that was what making my issues on a 32bit machine.

If someone does know how I can fix this please let me know.
Andy,

Look back to this post

gbWilly said

AndyGable said

That's great news about the fix when I installed Gambas from source the sse_support was part of one of packages that get installed for building it.

Once 3.20.2 is available on the website I shall try that.

Just so we are on the same page:

Code

[gb.gui.base].Splitter.DoLayout.239 #26: Division by zero
[gb.gui.base].Splitter.DoLayout.239
[gb.gui.base].Splitter.Layout_Write.338
[gb.gui.base].Splitter.MinSize_Write.525
FDbugInfo._new.57
FSearch._new.44
FMain._new.65
Project.Main.484 ?
This above issue has been fixed. I have not encountered the sse support problem.

I would attach a i386 file repository for debian11 and 12. It installs the 3.20.90 (master) version with this fix, so you could test on one of the systems. But it is not allowed as attachment, so I can't.

The fix is in the 3.20.2 release. 3.20.2 has been release a few day back, so knock yourself out and enjoy.

gbWilly
- Gambas Dutch translator
- Gambas wiki content contributor
- Gambas debian/ubuntu package recipe contributor
- GambOS, a distro for learning Gambas and more…
- Gambas3 Debian/Ubuntu repositories


… there is always a Catch if things go wrong!
Online now: No Back to the top

Post

Posted
Rating:
#24
Enthusiast
AndyGable is in the usergroup ‘Enthusiast’

gbWilly said

The fix is in the 3.20.2 release. 3.20.2 has been release a few day back, so knock yourself out and enjoy.

Hi All,
I have installed 3.20.2 on to my 32bit IBM ThinkPad and it works (all I had to do was remove any reference the QT6 as this was what making the  sse support issue)

 I have also Installed 3.20.2 on to my Development PC (64bit) and it Sort of works

I have a exit code that runs this

Code

Public Sub btnReturnToSaleMode_Click()
    If Global.BeepOnKeyPress = "Yes" Then SystemFunctions.PCSpeakerBleep(500)
    Dim DisplayMessage As String = Null
    
     DisplayMessage = Null
    DisplayMessage &= "Please confirm your wish to return to Sales mode"
    
    If Global.ShowSyncReminder = "Yes" Then
        DisplayMessage &= gb.crlf & gb.crlf & gb.crlf
        DisplayMessage &= "If you have done any changes to the database please" & gb.crlf
        DisplayMessage &= "Remeber to sync the PoS for the changes to be applied" & gb.crlf
        DisplayMessage &= gb.crlf
        DisplayMessage &= "Signed off menu -> User Menu -> Database Menu"
    End If

    Me.Enabled = False
    With frmQuestionBO
        .labFunction.Caption = "SignOffQuestion"
        .labSystemMessage.Caption = DisplayMessage
    End With
    frmbackground.Workspace1.Add(frmQuestionBO, 0)
End

In 3.19.5 it works fine But now in 3.20.2 it disables the menu form but will not show the frmQuestionBO (do I need to bring it to the front or something)
and this seems to be ONLY when the code is run from the development environment
Online now: No Back to the top

Post

Posted
Rating:
#25
Avatar
Administrator
gbWilly is in the usergroup ‘unknown’

AndyGable said

In 3.19.5 it works fine But now in 3.20.2 it disables the menu form but will not show the frmQuestionBO (do I need to bring it to the front or something)
and this seems to be ONLY when the code is run from the development environment

I have no idea what is going on but there where some changes from 3.19 to 3.20 in workspace:

Code

Workspace
    Disable menu shortcuts in design mode.
    Select is a new event that is raised when the user clicks on a tab button, even if it is the current one.
    Find() is a new method that returns the position of a specific Workspace window.
    The second argument of Add() is now the position where the new window must be inserted. If not specified, the window is inserted at the end.
    Adding a window at a specific position should work better now.
    Update Italian translation.
    Update Dutch translation.
    Update documentation.

See: /doc/release/3.20.0 - Gambas Documentation

And if you develop your POS system for company environments, why go with latest gambas. Develop on a certain version and keep your IMB's at that version (of both debian and gambas3) for a, by you, determined period (like until the POS software is feature finished for example), so you don't get into this trouble.

I, for example, have migrated a complete suite of software I wrote (running on XP), from a mix of vb/vba/ms access to gambas3/mysql later mariadb. I had Gambas 3.6.2 running at that time (2013) on Mint Mate 17 clients and my re coding of all was feature finished somewhere in 2017. So, yes I stayed on same Gambas version for 4 years, before even looking at upgrading to a higher version and I did backport a feature to Gambas 3.6.2 from a later release that I really needed. The headless servers at that time, run Debian 7 or 8 (don't remeber exactly) and run Gambas 3.6.2 daemons as well. Before the debian servers, I run a Windows 2003 server with Active Directory.

I currently run gambas 3.18.4  (since dec '23) on Debian 12 Mate clients (bye bye to first Ubuntu and now even the Ubuntu based OSes with their crap). The servers have been upgraded a few times and are on debian11 ATM, this all in a company. I plan to stay there for a about a year or 3 ( so till somewhere in 2026 when debian 13 will be out for about a year and has been proven stable long enough) before going to a newer version of Gambas3 and Debian. So, no surprises there when gambas has an update as it doesn't affect my running software in company environment. Stability over the latest and greatest when it comes to work situations is my strategy to keep me from wasting my time. My software runs 24/7 and I can't afford it breaking because of some changes to gambas3 (no need to go out late night to solve some unneeded shit because of an update).

I do test most of the company software against a newer release now and then. Somewhere in 2026 I will do a distribution upgrade and a gambas upgrade but not before having it all tested. I run my own repository with gambas3 and if there are fixes to problems in gambas3 that I need, I simply backport them to my 3.18.4 version, so I do not miss out on what I really need.

So, in short: Ensuring yourself that you are in control of the environment you run your software in saves you a lot of trouble, time and work.

My 2 cents,

gbWilly
- Gambas Dutch translator
- Gambas wiki content contributor
- Gambas debian/ubuntu package recipe contributor
- GambOS, a distro for learning Gambas and more…
- Gambas3 Debian/Ubuntu repositories


… there is always a Catch if things go wrong!
Online now: No Back to the top
1 guest and 0 members have just viewed this.