[GELÖST] Datum zu MySQL tabelle schreiben

Wie auf MySql und den ganzen Rest zugreifen ...

[GELÖST] Datum zu MySQL tabelle schreiben

Beitragvon swissgamba » Fr 19. Sep 2014, 10:31

Hallo,
wie convertiere ich ein eigegebene datum in ein Textbox zu MySql? MySQL nimmt nur yyyy-mm-dd als dateformat. Wenn ich es so eintippe in mein textbox geht es gut, alber ich hab ein INSERT string um die Tabelle zu füllen und der User sollte es als dd.mm.yyyy eingeben (können):
Code: Alles auswählen
 qryins = "insert into Tblleistungen (leistungenID,VertragID, Datum, Stunden) values( '" & TextBox1.Text & "',  '" & TextBox2.Text & "', '" & TextBox3.Text & " ','" & TextBox4.Text & "')"


ich muss also erst das format vom textbox.text convertieren denke ich mal, oder? aber wie?

Gruss, Swissgamba
Zuletzt geändert von swissgamba am Mo 29. Dez 2014, 11:38, insgesamt 1-mal geändert.
swissgamba
Foriker
 
Beiträge: 45
Registriert: Mo 15. Sep 2014, 11:59

Re: Datum zu MySQL tabelle schreiben

Beitragvon 4tionov » Fr 19. Sep 2014, 11:31

Also das ist in der Doku beschrieben:
http://gambaswiki.org/wiki/cat/userformat?w#t4

Aber ein Datum in einer Textbox eingeben źu lassen, ist eine schlechte Idee, außer du verwendest eine Maske dafür. Verwende besser den DateChooser.
Alles Gute,

4tionov
4tionov
Foriker
 
Beiträge: 90
Registriert: So 18. Mai 2014, 22:40

Re: Datum zu MySQL tabelle schreiben

Beitragvon gambi » Fr 19. Sep 2014, 19:20

Hallo swissgamba,
schaue doch mal im gambas-buch unter http://www.gambas-buch.de/dw/doku.php?i ... .6.2:start nach.
Da solltest du Anregungen und Lösungen finden.

gg
gambi
Foriker
 
Beiträge: 130
Registriert: Mi 8. Mai 2013, 21:46

Re: Datum zu MySQL tabelle schreiben

Beitragvon swissgamba » Fr 19. Sep 2014, 22:08

Ok, diese masken habe ich auch angeschaut, die sind mir bekannt. Ich werde es mal met ein datepicker versuchen.
Danke
swissgamba
Foriker
 
Beiträge: 45
Registriert: Mo 15. Sep 2014, 11:59

Re: Datum zu MySQL tabelle schreiben

Beitragvon swissgamba » Sa 20. Sep 2014, 10:08

Guten Tag,

Ich habe es mal schnell versucht, was auch gleich geklappt hat:
Code: Alles auswählen
Public Sub DateChooser1_Change()
   
dt = Format(DateChooser1.Value, "yyyy-mm-dd")
End

eingebaut im code. Jetzt wird MySQL richtig gefullt. Nur den output von der Tabelle stimmt jetzt nich mehr.
Also: input datechooser: "10.05.2014"
format datechooser to insert in Tabelle: "2014-05-10"
Tabelle neu lesen: "05/10/2014"!....hmmmmm
swissgamba
Foriker
 
Beiträge: 45
Registriert: Mo 15. Sep 2014, 11:59

Re: Datum zu MySQL tabelle schreiben

Beitragvon 4tionov » Sa 20. Sep 2014, 11:25

swissgamba hat geschrieben:format datechooser to insert in Tabelle: "2014-05-10"
Tabelle neu lesen: "05/10/2014"!....hmmmmm


Das ist (wahrscheinlich/denke ich) die Stringrepräsentation des Gambas Typ Date.
http://gambaswiki.org/wiki/lang/type/date

Date kannst du wieder formatieren, wie du es möchtest. Das machst Du mit der Funktion Format. Im Deinem Programm arbeitest du sinnvollerweise mit dem Typ Date und in der DB speicherst du ebenfalls im Typ Date. Es kann durchaus sein, dass DB und Gambas die Typen unterschiedlich speichern und auch darstellen. Wichtig ist, mit dem Typ zu arbeiten, so lange, bis du ihn darstellst, erst dann formatierst du ihn.

Also schau dir mal die Date-Typen und Funktionen von Gambas und Mysql an. Sowohl eine DB als auch Gambas haben eine Reihen von Funktionen, mit denen diese Typen verarbeitet werden. Und die Funktion Format kennst du ja schon. Damit kannst du den Datentyp so formatieren wie du es wünschst.
Alles Gute,

4tionov
4tionov
Foriker
 
Beiträge: 90
Registriert: So 18. Mai 2014, 22:40

Re: Datum zu MySQL tabelle schreiben

Beitragvon swissgamba » Sa 20. Sep 2014, 11:28

habe mal etwas probiert was ich gefunden habe beim gridproperties()
(column 2 enthalt das Datum)
Code: Alles auswählen
GridViewData.Columns[2].Text = Format$(Date(Rnd(0, 2200) + CFloat(Date)), "dd-mm-yy")

aber es andert sich nichts wenn ich das Datum format ändere.
nur format(datumfield, "dd.mm.yyyy") gibt fehler wie "wanted float got string instead"..
swissgamba
swissgamba
Foriker
 
Beiträge: 45
Registriert: Mo 15. Sep 2014, 11:59

Re: Datum zu MySQL tabelle schreiben

Beitragvon 4tionov » Sa 20. Sep 2014, 11:43

swissgamba hat geschrieben:habe mal etwas probiert was ich gefunden habe beim gridproperties()
(column 2 enthalt das Datum)
Code: Alles auswählen
GridViewData.Columns[2].Text = Format$(Date(Rnd(0, 2200) + CFloat(Date)), "dd-mm-yy")

aber es andert sich nichts wenn ich das Datum format ändere.
nur format(datumfield, "dd.mm.yyyy") gibt fehler wie "wanted float got string instead"..
swissgamba


Sorry, ich weiß nicht was du meinst. GridViewData kenne ich nicht. Ich weiß auch nicht, was "Date(Rnd(0, 2200) + CFloat(Date)" soll ...

"wanted float got string instead" bedeutet, dass du einem Objekt, das nur Float speichern kann, einen String übergeben hast. Date wird gerne intern als Float gespeichert. Du kannst auf jeden Fall einer Spalte, die Date ist, keinen String übergeben. Hast du eigentlich gelesen, was ich oben geschrieben habe?

Arbeite programmintern mit Date, und formatiere NUR ZUR PRÄSENTATION.
Alles Gute,

4tionov
4tionov
Foriker
 
Beiträge: 90
Registriert: So 18. Mai 2014, 22:40

Re: Datum zu MySQL tabelle schreiben

Beitragvon swissgamba » Sa 20. Sep 2014, 12:43

ich habe meine betrag gepostet und habe dann deine beitrage gelesen...gridviewdata is die Name meiner Gridview(das hatte ich schreiben sollen) ich bin dabei deine beitrag zu studieren.....

Swissgamba
swissgamba
Foriker
 
Beiträge: 45
Registriert: Mo 15. Sep 2014, 11:59

Re: Datum zu MySQL tabelle schreiben

Beitragvon swissgamba » Sa 20. Sep 2014, 12:45

oh und diese formattierung mit cfloat usw.habe ich von hier:

http://gambas-buch.de/dw/doku.php?id=k17:k17.7:k17.7.3:start
swissgamba
Foriker
 
Beiträge: 45
Registriert: Mo 15. Sep 2014, 11:59

Re: Datum zu MySQL tabelle schreiben

Beitragvon 4tionov » Sa 20. Sep 2014, 14:30

Hallo Swissgamba,

swissgamba hat geschrieben:ich habe meine betrag gepostet und habe dann deine beitrage gelesen...gridviewdata is die Name meiner Gridview(das hatte ich schreiben sollen) ich bin dabei deine beitrag zu studieren.....


Sorry, ich hatte keine Zeit. Gridview kann in den Spalten eh nur Strings, darum ist das schon richtig, dass du das Datum dafür formatierst.
So fragst du ein Datum aus der DB ab und formatierst es für die Anzeige:

gambas code
Dim con As Connection
Dim res As Result
Dim datum As Date
Dim qry As String

con = Dbs.Deg

qry = "select datum from tbmitspaltedatum;"
res = con.Exec(qry)
datum = res!datum
Debug TypeOf(datum) ' liefert 8 für Date
Debug datum 'das "rohe" Datum wie es die DB liefert
Debug Format$(datum, "dd.mm.yy") 'Formatierte ausgabe


Aber irgendwie begreife ich dein Problem nicht. Darum wäre es in dem Fall besser, wenn du ein Projekt mitlieferst.
Alles Gute,

4tionov
4tionov
Foriker
 
Beiträge: 90
Registriert: So 18. Mai 2014, 22:40

Re: Datum zu MySQL tabelle schreiben

Beitragvon 4tionov » Sa 20. Sep 2014, 14:35

swissgamba hat geschrieben:oh und diese formattierung mit cfloat usw.habe ich von hier:

http://gambas-buch.de/dw/doku.php?id=k17:k17.7:k17.7.3:start


Das ist keine "Formatierung mit cfloat", da wird ein Zufallsdatum generiert.
Alles Gute,

4tionov
4tionov
Foriker
 
Beiträge: 90
Registriert: So 18. Mai 2014, 22:40

Re: Datum zu MySQL tabelle schreiben

Beitragvon swissgamba » Mo 22. Sep 2014, 17:29

@4tionov

Ich habe die Lösung gefunden!... hierunter die ganze code für das "testprogram" Ich nehme deine Antworten ernst und habe mal lange nachgedacht wie ich das machen kann/muss.

gambas code
' Gambas class file

Public databaseConnection As New Connection
Public resultData As Result
Public dt As String
Const DateOnly As Integer = 0
Public tbdate As String

Public Sub Form_Open()

' Set database connection properties
databaseConnection.Type = "mysql"
databaseConnection.Host = "localhost"
databaseConnection.Name = "Gsorefacilities"
databaseConnection.Login = "root"
databaseConnection.Port = "3306"
' Open the connection
Try databaseConnection.Open()
If Error Then
Message.Info("<b>Could not open database connection</b><hr>Error:<br>" & Error.Text)
Return
End If
SetGridProperty
Fill

End

Public Sub Fill()
Dim c As Integer
Dim introw As Integer
Dim rsdate As Date
' Get the data in a table.
resultData = databaseConnection.Exec(" Select * From Tblleistungen")
' Set the number of GridView columns
GridViewData.Header = True
GridViewData.Columns.Count = resultData.Fields.Count

If GridViewData.Rows.Count <> 0 Then
GridViewData.Clear
Endif
'gridview füllen
If resultData.Available Then
GridViewData.Rows.Count = resultData.Count
For Each resultData
rsdate = resultData!Datum '<-------------------------------------------------------------------------------
tbdate = Format(rsdate, "dd.mm.yyyy")'<--------------------------------------------------------------
GridViewData[introw, 0].Text = resultData!LeistungenID
GridViewData[introw, 1].Text = resultData!VertragID 'Diese drei seile machen der Trick
GridViewData[introw, 2].Text = tbdate'<--------------------------------------------------------------
GridViewData[introw, 3].Text = resultData!Stunden
GridViewData[introw, 4].Text = resultData!Belastet
GridViewData[introw, 5].Text = resultData!Bemerkungen
GridViewData[introw, 6].Text = resultData!RechnungID
Inc introw

Next
Endif

Me.Center
Catch
Message.Info("<b>Select database records error</b><hr>Error:<br>" & Error.Text)
End

Public Sub SetGridProperty()
GridViewData.Header = GridViewData.Horizontal ' Kopfzeile wird angezeigt
GridViewData.Mode = Select.Single ' Die selektierte Zeile wird farbig markiert
resultData = databaseConnection.Edit("Tblleistungen")
GridViewData.Columns.Count = resultData.Fields.Count ' Anzahl der Spalten
GridViewData.Columns[0].Resizable = False ' Die erste Spalte-Breite ist fix
GridViewData.Columns[0].Width = 20
GridViewData.Columns[0].Title = "LeistungenID"
GridViewData.Columns[1].Width = 20
GridViewData.Columns[1].Title = "VertragID"
GridViewData.Columns[2].Width = 100
GridViewData.Columns[2].Title = "Datum"
GridViewData.Columns[2].Alignment = align.Center
GridViewData.Columns[3].Title = "Stunden"
GridViewData.Columns[3].Width = 100
GridViewData.Columns[3].Alignment = align.Center
GridViewData.Columns[4].Title = "Belastet"
GridViewData.Columns[4].Width = 80
GridViewData.Columns[5].Title = "Bemerkungen"
GridViewData.Columns[5].Width = 150
GridViewData.Columns[6].Title = "RechnungID"
GridViewData.Columns[6].Width = 100

End ' SetGridProperty()
Public Sub Form_Close()
' Make sure we close the database connection
' We use TRY so if there is an error we still
' quit the application
Try databaseConnection.Close()
End

Public Sub DateChooser1_Change()

dt = Format(DateChooser1.Value, "yyyy-mm-dd")
End

Public Sub Button1_Click()

Dim qry As String
Dim qryins As String
Dim res As Result
Dim row As Integer = GridViewData.Rows.Count


'Das result abfragen
qry = "select * from Tblleistungen"
res = databaseConnection.Exec(qry)


'Nun Hinzufügen (analog vorgehen für UPDATE und DELETE)

qryins = "insert into Tblleistungen (leistungenID,VertragID, Datum, Stunden) values( '" & TextBox1.Text & "', '" & TextBox2.Text & "', '" & dt & " ','" & TextBox4.Text & "')"
Debug dt
databaseConnection.exec(qryins)
'textboxen leeren
TextBox1.text = ""
TextBox2.text = ""
TextBox4.text = ""
'erneut gridview füllen
Fill
End


jetzt gehts weiter.... Danke für eure hilfe bis jetzt
Zuletzt geändert von tux_ am Mo 22. Sep 2014, 17:44, insgesamt 1-mal geändert.
Grund: Bitte die guten Code-Tags verwenden
swissgamba
Foriker
 
Beiträge: 45
Registriert: Mo 15. Sep 2014, 11:59

Re: Datum zu MySQL tabelle schreiben

Beitragvon 4tionov » Mo 22. Sep 2014, 18:07

swissgamba hat geschrieben:@4tionov

Ich habe die Lösung gefunden!... hierunter die ganze code für das "testprogram" Ich nehme deine Antworten ernst und habe mal lange nachgedacht wie ich das machen kann/muss.

...
jetzt gehts weiter....
Danke für eure hilfe bis jetzt


Ok, super, wenn es hinhaut. Ich bin gerade auf Reise und schaue nicht so oft rein. Gerade habe ich den Code übeflogen und er sieht ganz gut aus. Wenn du weitere Fragen hast, helfe ich gerne, so weit ich kann. Mir liegt sehr daran, dass Gambas als Datenbank Frontend, RAD-Tool und Alternative für Access bekannter wird. Ich denke, Gambas ist auch ganz gut professionell zu verwenden, und je mehr Leute es nutzen, desto besser.
Alles Gute,

4tionov
4tionov
Foriker
 
Beiträge: 90
Registriert: So 18. Mai 2014, 22:40

Re: Datum zu MySQL tabelle schreiben

Beitragvon swissgamba » Mo 22. Sep 2014, 18:15

Was Gamba's betrifft als alternatieve fur MS Access, bin ich immer mehr überzeugt. Libreoffice Base hat nich das was ich will, und jetzt freue ich mich wieder das programmieren zu lernen. Ich bin eine totale nono was programmiersprachen angeht aber er interessiert mich. Ich habe mich vor 4 Jahre verabschiedet von MS als OS, eine alternatieve fur Access hat mir immer gefeht....bis jetzt. (verzeihe meine Grammatik, bin Holländer :roll: )
swissgamba
Foriker
 
Beiträge: 45
Registriert: Mo 15. Sep 2014, 11:59

Nächste

Zurück zu Datenbankzugriff

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast