| |
Fragen & Antworten rund um sev-KomponentenDaten von einem Grid in ein anderes übernehmen | | | Autor: crosstravel | Datum: 04.03.17 15:52 |
| Hallo,
ich knorze seit einiger Zeit an einem Problem herum, bei dem ich für Eure Hilfe dankbar wäre.
Ich habe zwei Grids. Grid1 stelle ich einen Bussitzplan mit Sitznummern, Namen usw. dar. Der
Benutzer in einem Reisebüro sieht sofort, welcher Sitzplatz im Bus noch frei ist.
Grid2 darunter dient der Erfassung einer neuen Kundenbuchung. Teil dieser Buchung ist auch die
Reservation eines freien Sitzplatzes. Ich stelle mir vor, dass der Sachbearbeiter auf einen der
freien Sitzplätze klickt und die Sitznummer wird sofort in das Buchungsgrid übertragen. Das Klicken
in Grid1 inkl. der Erkennung des Sitzplatzes funktioniert - nur die Übernahme in das Grid2 macht
Probleme. Wie realisiere ich das und wo siedle ich die Funktion an (Before_Update oder ...)
Vielen Dank
Rainer | |
Re: Daten von einem Grid in ein anderes übernehmen | | | Autor: Franki | Datum: 06.03.17 02:31 |
| Hallo Rainer,
wie lautet dein Code für die Übernahme von Grid 1 zu Grid 2?
Mit xxx*.Update der Grids würde ich da gar nichts machen lediglich den Wert übertragen. Denn die Buchung ist dann ja noch nicht gespeichert nur weil in der Eingabemaske der Sitzplatz eingetragen bzw. übernommen wird.
Und direkte Übernahme sollte sowieso erst dann erfolgen wenn die Erfassungsmaske final gespeichert wird. Was soll passieren wenn z.B. zwei Sachbearbeiter Kunden beraten und beide den gleichen noch freien Sitzplatz übernehmen wollen ohne dass die Reservierung endgültig abgeschlossen wird?
Wenn der erste Sachbearbeiter die Buchung final abschließt wird nochmals geprüft, ob der Sitzplatz noch frei ist, egal ob er durch den anderen Sachbearbeiter schon "vorgemerkt" worden ist. Wer zuerst kommt malt zuerst.
Sonst kann es zu einer Panne kommen wie vor zwei Jahren bei einem namhaften Fernbus Unternehmen wo Doppelreservierungen vorgekommen sind.
Ich habe vor ca. 10 Jahren mal eine Software für eine Autovermietung geschrieben wo online Reservierungen möglich sind. Da hatte ich genau dieses Problem in der Testphase.
Gruß
Franl | |
Re: Daten von einem Grid in ein anderes übernehmen | | | Autor: crosstravel | Datum: 06.03.17 07:56 |
| Hallo Franki,
danke für Dein Antwort. Nachstehend der Code, welchen ich für die Sitzreservierung einsetze. Dabei enthält sevGrid3 den Busspiegel mit den freien und gebuchten Sitzplätzen, über sevGrid4 erfolgt die
Buchung des Teilnehmers mit Name, einstieg, Sitzplatz usw.
Der Benutzer arbeitet mit sevGrid4. in der Variablen Grid4Row ist die aktuelle Row enthalten. Während
der Buchung klickt er auf einen freien Sitzplatz in sevGrid3. Nun soll die dort enthaltene Sitznummer
(z.B. 5A) im Grid4 in der Spalte 7 angezeigt werden - was es aber nicht tut. Anschliessend sollte der
Cursor in die Spalte 8 gehen.
Private Sub sevGrid3_CellClick(ByVal nRow As Long, _
ByVal nCol As Long, _
ByVal Button As Integer, _
ByVal Shift As Integer)
If Button <> vbRightButton Then
sSitzbuchung = ""
If nCol = 3 Then
If sevGrid3.Text(nRow, 4) <> "0" Or sevGrid3.Text(nRow, 5) <> 0 Then
MsgBox "Der Platz " & sevGrid3.Text(nRow, 3) & " ist nicht buchbar"
Exit Sub
Else
sSitzbuchung = sevGrid3.Text(nRow, 3)
SitzBuchen
Exit Sub
End If
Else
If nCol = 9 Then
If sevGrid3.Text(nRow, 10) <> "0" Or sevGrid3.Text(nRow, 11) <> 0 Then
MsgBox "Der Platz " & sevGrid3.Text(nRow, 9) & " ist nicht" & _
"buchbar"
Exit Sub
Else
sSitzbuchung = sevGrid3.Text(nRow, 9)
SitzBuchen
Exit Sub
End If
Else
If nCol = 16 Then
If sevGrid3.Text(nRow, 17) <> "0" Or sevGrid3.Text(nRow, 18) <> 0 Then
MsgBox "Der Platz " & sevGrid3.Text(nRow, 16) & " ist nicht" & _
"buchbar"
Exit Sub
Else
sSitzbuchung = sevGrid3.Text(nRow, 16)
SitzBuchen
Exit Sub
End If
Else
If nCol = 22 Then
If sevGrid3.Text(nRow, 23) <> "0" Or sevGrid3.Text(nRow, _
24) <> 0 Then
MsgBox "Der Platz " & sevGrid3.Text(nRow, 22) & " ist nicht" & _
"buchbar"
Exit Sub
Else
sSitzbuchung = sevGrid3.Text(nRow, 22)
SitzBuchen
Exit Sub
End If
End If
End If
End If
End If
End If
End Sub
Private Sub SitzBuchen()
With sevGrid4
If .IsEditMode() = MODE_EDIT Then
.Text(Grid4Row, 7) = sSitzbuchung
Else
.CellNew("RtnSitzHin") = sSitzbuchung
End If
End With
End Sub | |
Re: Daten von einem Grid in ein anderes übernehmen | | | Autor: Franki | Datum: 07.03.17 01:54 |
| Hallo,
sag mal, blickst du eigentlich durch deinen eigenen Programmcode noch durch wenn du mal zwei Wochen Urlaub machst?
Das ist ja der Hammer, nur nichtssagende Bezeichnungen von Steuerelementen bzw. Teilen davon.
Wer soll denn mit Beizeichnungen wie Grid 1,2,...x oder Spalte/Zeile 1,2...x klar kommen? Kein Mensch der dein Programm nicht kennt kann wissen was das alles bedeuten soll. Und selbt wenn, dann würde das jede Menge Zeit bedeuten sich das daurch zu arbeiten.
Es war ja schon immer so, dass man Steuerelemente auch sinnvoll benennen kann. Also z.B. sevGrid_Sitzplatz, sevGrid_Bus, sevGrid_Reservierungen oder was auch immer.
Und wenn man mit Zahlen arbeitet für Spalten kann man auch Kommentare hinterlegen was die jeweilige Spalte bedeutet.
If nCol = 9 Then ' Erklärung was Spalte 9 bedeutet Sprechende Benennung für Steuerelemente steht schon seit über 20 Jahren in jedem Lehrbuch für Anfänger und das gilt auch heute noch. Automatische Benennung schön und gut, aber das ist immer nur ein Vorschlag. Du machst es dir und uns einfacher wenn du deine Steuerelemente sinnvoll benennst.
Aber unabhängig davon erkenne ich an deinem Code weder woher die Daten der Grids stammen (also wie und wann eingelesen) noch wie Änderungen gespeichert werden.
Das ist aber der entscheidende Punkt deiner Frage.
Ich erkenne jetzt noch nicht wie du das machst. Denn Überhahme von einem Grid ins andere per Code ist eine Sache, aber da wird dann ja noch nichts gespeichert. Im Multiuser Betrieb geht das krachen wenn sich zwei User ins Gehege kommen.
Gruß
Frank | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere Infos
|