Wpis z mikrobloga

#access #bazydanych #mssql #sql #vba #office2013 #oprogramowanie

Witam
Proszę o pomoc w stworzonej przez mnie aplikacji "Access" pt. przychodnia lekarska.

Mam problem z modułem "Zajęte wizyty" - jest to formularz który pokazuje umówione wizyty do danych lekarzy.
Wizytę rezerwuję się poprzez wpisanie numeru ID kartoteki danego pacjenta.

Mój problem polega na oprogramowaniu przycisku "Anuluj wizytę" - przycisk ten miałby wykonywać polecenie SQL, które zrobi "delete" na wybranym IDKartoteki - zamieniając na nulla - wtedy zajęta wizyta znika i pojawia się w module "Dostępne wizyty"

Zgodnie załączonym obrazkiem
http://pokazywarka.pl/fnn9xr/
Po wciśnięciu przycisku "Anuluj wizytę" - ID
Kartoteki powinno się zmienić na null dla wybranej ID_Wizyty czyli numer 34.

Dodatkowo chciałbym aby była możliwość wybrania na początku u jakiego lekarza danej specjalności oglądamy wizytę. Czyli wybieramy z rozwijanej listy np. gastrologa i pojawiają się nam tylko wizyty dla gastrologa, zmieniamy na ginekologa i możemy zobaczyć tylko wizyty gastrologa.

Proszę o pomoc w zaprogramowaniu.
  • 6
@l3cho: nie wiem jak wyglądają Twoje tabelki ale jeśli ja bym to robił to przy wizycie dorobił bym status (odbyta, anulowana, no show, oczekująca) i zmieniał po prostu ten status - rozwiązanie rozwojowe i proste

co do gastrologa to znow przydałby się układ tabel, ale tak na szybko (i znów zgodnie z tym jak ja bym to zrobił) to:

select * from wizyty w left join lekarze l on w.lekarz_id=l.lekarz_id left
@l3cho: delete usuwa cały rekord, polecenie którego szukasz to update :)
w sql będzie to wyglądało tak: UPDATE Wizyty SET IDKartoteki = NULL WHERE IDWizyty = 34

Twoje drugie życzenie będzie najprościej osiągnąć używając filtrów (możesz podpiąć pole kombi do filtra na formularzu), jako źródło pola kombi ustawiasz typy lekarzy (pewnie masz na to jakiś słownik, jak nie to powinieneś)
@rbrck, @weedget Tak tak znam składanie SQLa ale mam problem właśnie z podpięciem SQL pod button w Accesie, nie da się po porostu wpisać SQLA na sucho trzeba to jakoś połączyz VBA i w tym mam problem
@l3cho: ależ oczywiście że się da
napiszę na szybko (jc to "ide" Ci poprawi):
Dim sql As String
sql = "UPDATE Wizyty SET IDKartoteki = NULL WHERE IDWizyty = " & Me.ID_Wizyty
DoCmd.RunSql sql

takie coś na bank zadziała na accesie podłączonym do ms sql, nie wiem jak się zachowa na mdb ale w sumie powinno zadziałać
@rbrck: mistrzu! masz u mnie plusa codziennie na śniadanie :) Dokładnie o to mi chodziło, dzięki!
czy mógłbym prosić o wytłumaczenie & Me? rozumiem że to wyciąga wartość z pola które zdefiniuje w dalszej części?
@l3cho: ok to może od początku wszystko co napisałem:
Dim sql As String - deklaracja zmiennej sql jako łańcuch znaków, tak naprawdę zmienna mogła by się też nazywać wykoppeel

sql = ... - przypisanie wartości do tej zmiennej, zmienna jest typu string więc piszemy ją w cudzysłowiach, część naszego zapytania chcemy pobrać dynamicznie z formularza, symbolem konkatenacji stringów w VBA jest & (w innych językach najczęściej +), Me oznacza aktywne miejsce,