[Gambas-user] DataSource

Fabien Bodard gambas.fr at gmail.com
Mon Nov 23 16:30:21 CET 2020


Well thank you Martin ...

But that's not exactly what I'm looking for :-).

I need to wait about Benoit answer ... or read myself datasource code ...

Le lun. 23 nov. 2020 à 11:54, Martin <mbelmonte at belmotek.net> a écrit :
>
> The answer is .Create
>
> In this example, I use a temporary control to edit the data and then delete the control, you could hide it instead of deleting it.
> If you already have controls on your form, simply use .Create
>
> Sorry but I couldn't find a way to do it without a data control.
>
> Public Sub Form_Open()
>
>
>   Dim tb As Table
>   Dim fd As Field
>   Dim dt As DataControl
>
>   DataSource1.Connection.Open
>   DataSource1.Table = "clients"
>   DataSource1.Filter = db.Subst("cname = &1", "martin")
>   DataSource1.MoveFirst
>
>   dt = New DataControl(DataSource1) As "dat"
>   With dt
>     .Name = "temportal"
>     .Field = "cphone"
>     .Value = Format(Now(), "hhnnss.u")
>   End With
>   dt.Refresh
>
> End
>
> Public Sub Button1_Click()
>
>   Dim tdat As Control
>
>   DataSource1.Create
>   For Each tdat In DataSource1.Children
>     If tdat.Name = "temportal" Then
>       tdat.Delete
>     Endif
>
>   Next
>
> Martin
>
> On 23/11/20 11:08, Fabien Bodard wrote:
>
> My question is just about the ability to edit data if I use a filter on the datasource.
>
> Le lun. 23 nov. 2020 à 09:39, Martin <mbelmonte at belmotek.net> a écrit :
>>
>> Hi,
>>
>> I don't usually use the db.form component but maybe you could use the "filter" property to restrict to a single record and then
>> Datasource.Filter = DB.Subst ("prenom = & 1", martin)
>> If you have a test project to take a look maybe I can think of something else.
>>
>> Anyway this can help too
>>
>>
>> Public Sub Form_Open()
>>
>>   Dim f As ResultField
>>   Dim res As Result
>>
>>   res = db.Current.Exec("SELECT * FROM tutabla WHERE id='3'")
>>
>>   If res Then
>>     If res.Fields.Exist("tucampo") Then
>>       Print res.Fields["tucampo"]
>>     Endif
>>   Endif
>>
>> End
>>
>> Martin
>>
>> On 22/11/20 22:59, Fabien Bodard wrote:
>>
>> I need help..
>>
>> I want my datasource reach a given line given one field and not a line
>> index... how can I achieve that quickly ... Actually I'm doing it by a
>> Force and stupid way.
>>
>>
>> Static Private reference As String
>>
>> Public Sub Run(Value As String)
>>
>>   reference = Value
>>   FClientEdit.Showmodal
>>
>> End
>>
>> Public Sub Form_Open()
>>
>>   Dim i As Integer
>>   Dim aGeo As String[]
>>
>> '----- HERE HOW TO FIND LINE :-/ --------------
>>   DataSource1.MoveFirst
>>   For i = 0 To DataSource1.Count - 1
>>     If DataSource1["reference"] = reference Then Break
>>     DataSource1.MoveNext
>>   Next
>> '-------------------------------------------
>>
>>   Me.Text = DataSource1["reference"] & " - " & DataSource1["nom"] & "
>> " & DataSource1["prenom"]
>>
>>   If Not DataSource1!geo Then
>>     MapView1.Enabled = False
>>   Else
>>     MapView1.Map.AddTile("OpenStreetMap",
>> "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", Null).Copyright =
>> "© OpenStreetMap " & ("contributors")
>>     MapView1.Map.Zoom = 12
>>     MapView1.Map.AddShape("clients")
>>     aGeo = Split(DataSource1!geo, " ")
>>     MapView1.Map.Center = MapPoint(aGeo[0], aGeo[1])
>>     MapView1.Map["clients"].AddPoint(DataSource1!reference,
>> MapPoint(aGeo[0], aGeo[1]))
>>   Endif
>>
>> End
>>
>>
>>
>> ----[ http://gambaswiki.org/wiki/doc/netiquette ]----
>>
>>
>> ----[ http://gambaswiki.org/wiki/doc/netiquette ]----
>
>
> ----[ http://gambaswiki.org/wiki/doc/netiquette ]----
>
>
> ----[ http://gambaswiki.org/wiki/doc/netiquette ]----



-- 
Fabien Bodard


More information about the User mailing list