Langsung ke konten utama

MENGAMBIL DAN MENAMPILKAN DATA DARI KOLOM TREBEL ANEH DARI TABEL Gn_Cyan_Bawah DAN TABEL Sub_Gn_Cyan_Bawah DI DATABASE DATAMUSIK.db

MENGAMBIL DAN MENAMPILKAN DATA DARI KOLOM TREBEL ANEH DARI TABEL Gn_Cyan_Bawah DAN TABEL Sub_Gn_Cyan_Bawah DI DATABASE DATAMUSIK.db


Ok, CRUD data Trebel Biasa pada tabel Gn_Cyan_Bawah sudah beres selesai, sekarang kita melakukan CRUD data Trebel_Aneh pada tabel Gn_Cyan_Bawah, dan tabel Sub_Gn_Cyan_Bawah.


Untuk melakukan CRUD data `Trebel_Aneh` pada tabel `Gn_Cyan_Bawah` dan `Sub_Gn_Cyan_Bawah`, kita akan mengikuti aturan dan logika yang telah ditetapkan sebelumnya. Berikut adalah langkah-langkah untuk melakukan CRUD data tersebut.

### 1. Logika CRUD Data `Trebel_Aneh` pada Tabel `Gn_Cyan_Bawah`

- **Trebel_Aneh**:

  - **ID 1**: Sama dengan `Trebel_Biasa` ID 1 dari `Gn_Cyan_Bawah`.

  - **ID 2**: Sama dengan `Trebel_Biasa` ID 2 dari `Gn_Cyan_Bawah` yang setiap karakter angkanya dikurangi 1.

  - **ID 3**: Sama dengan `Trebel_Biasa` ID 3 dari `Gn_Cyan_Bawah` yang setiap karakter angkanya dikurangi 1.

  - **ID 4**: Sama dengan `Bass_2` ID 3 dari `Gn_Cyan_Atas` yang setiap karakter angkanya dikurangi 1.

### 2. Logika CRUD Data `Trebel_Aneh` pada Tabel `Sub_Gn_Cyan_Bawah`

- **Trebel_Aneh**:

  - **Sub_ID 1**: Sama dengan `Bass_1` Sub_ID 1 dari `Sub_Gn_Cyan_Atas` yang setiap karakter angkanya dikurangi 1.

### 3. Implementasi Kode CRUD untuk `Trebel_Aneh`


#### a. CRUD untuk `Trebel_Aneh` pada `Gn_Cyan_Bawah`

```python

def update_trebel_aneh_gn_cyan_bawah(cursor, conn, id_gn, trebel_biasa):

    # Mengambil data trebel_biasa untuk ID yang diberikan

    trebel_aneh = ''   

    if id_gn == 1:

        # ID 1: Sama dengan Trebel_Biasa ID 1 dari Gn_Cyan_Bawah

        trebel_aneh = trebel_biasa

    elif id_gn in [2, 3]:

        # ID 2 dan 3: Sama dengan Trebel_Biasa yang setiap karakter angkanya dikurangi 1

        trebel_aneh = ''.join(str(int(char)-1) for char in trebel_biasa if char.isdigit())

    elif id_gn == 4:

        # ID 4: Sama dengan Bass_2 ID 3 dari Gn_Cyan_Atas yang setiap karakter angkanya dikurangi 1

        cursor.execute("SELECT Bass_2 FROM Gn_Cyan_Atas WHERE ID = 3")

        bass_2_id_3 = cursor.fetchone()[0]

        trebel_aneh = ''.join(str(int(char)-1) for char in bass_2_id_3 if char.isdigit())   

    # Update nilai Trebel_Aneh ke tabel Gn_Cyan_Bawah

    cursor.execute("""

        UPDATE Gn_Cyan_Bawah

        SET Trebel_Aneh = ?

        WHERE ID = ?

    """, (trebel_aneh, id_gn))

    conn.commit()

```


#### b. CRUD untuk `Trebel_Aneh` pada `Sub_Gn_Cyan_Bawah`

```python

def update_trebel_aneh_sub_gn_cyan_bawah(cursor, conn, sub_id_gn):

    # Mengambil data Bass_1 dari Sub_Gn_Cyan_Atas untuk Sub_ID yang diberikan

    cursor.execute("SELECT Bass_1 FROM Sub_Gn_Cyan_Atas WHERE Sub_ID = 1")

    bass_1_sub_id_1 = cursor.fetchone()[0]    

    # Sama dengan Bass_1 Sub_ID 1 dari Sub_Gn_Cyan_Atas yang setiap karakter angkanya dikurangi 1

    trebel_aneh = ''.join(str(int(char)-1) for char in bass_1_sub_id_1 if char.isdigit())   

    # Update nilai Trebel_Aneh ke tabel Sub_Gn_Cyan_Bawah

    cursor.execute("""

        UPDATE Sub_Gn_Cyan_Bawah

        SET Trebel_Aneh = ?

        WHERE Sub_ID = ?

    """, (trebel_aneh, sub_id_gn))

    conn.commit()

```

### 4. Integrasi dengan Kode Utama

Pastikan fungsi-fungsi di atas diintegrasikan dengan alur CRUD yang sudah ada pada aplikasi Anda. Jika ada bagian yang mengharuskan panggilan fungsi ini, pastikan ID atau Sub_ID yang diproses sesuai dengan ketentuan yang telah ditetapkan.


### 5. Contoh Penggunaan Fungsi

```python

# Contoh penggunaan untuk Gn_Cyan_Bawah

trebel_biasa_id_1 = "1234"

update_trebel_aneh_gn_cyan_bawah(cursor, conn, 1, trebel_biasa_id_1)

# Contoh penggunaan untuk Sub_Gn_Cyan_Bawah

update_trebel_aneh_sub_gn_cyan_bawah(cursor, conn, 1)

```

Dengan implementasi ini, Anda dapat melakukan CRUD data `Trebel_Aneh` pada tabel `Gn_Cyan_Bawah` dan `Sub_Gn_Cyan_Bawah` sesuai logika yang telah ditentukan. Pastikan untuk melakukan tes pada berbagai skenario untuk memastikan semuanya berjalan sesuai harapan.


Iya, uraian yang kamu sampaikan tentang aturan dan logika tentang data kolom Trebel_Aneh adalah benar.

Tetapi sebelum melangkah ke CRUD, ada baiknya diperhatikan bahwa data Trebel_Aneh akan dapat dipakai bila data yang dipakai pada tabel Gn_Cyan_Atas ada di Id 4 (level_gn 4), id 8 (level_gn 8), atau id 12 (level_gn 12), dengan kata lain ketika user mengkomposisi nada untuk suatu lagu, ketika ia mengambil data dari gugusan nada mana pun di level_gn 4, level'gn 8, atau level_gn 12 maka data gugusan nada Trebel_Aneh pada tabel Gn_Cyan_Bawah, dan Sub_Gn_Cyan_Bawah baru bisa dipakai, dan bila data Trebel_Aneh dipakai, maka data Trebel_Biasa tidak dipakai, atau sebaliknya bila data Trebel_Biasa dipakai, maka data Trebel_Aneh tidak dipakai,  

Level_gn pada data tabel Gn_Cyan_Atas ditentukan pada bagian Bass mulai dari Bass_1 id 1 = level_gn 1, Bass_1 id 2 = level_gn 2, Bass_1 id 3 = level_gn 3, Bass_2 id 1 = level_gn 4, Bass_2 id 2 adalah kosong (tidak boleh menginput data pada sel ini), Bass_2 id 3 = level_gn 5, Bass_3 id 1 = level_gn 6, Bass_3 id 2 = level_gn 7, Bass_3 id 3 = level_gn 8, Bass_4 id 1 adalah kosong (tidak boleh menginput data pada sel ini), Bass_4 id 2 = level_gn 9, Bass_4 id 3 = level_gn 10, Bass_5 id 1 = level_gn 11, Bass_5 id 2 = level_gn 12, Bass_5 id 3 adalah kosong (tidak boleh menginput data pada sel ini),  


Baik, penjelasan tambahan ini menambahkan syarat yang penting untuk penggunaan data `Trebel_Aneh` dalam komposisi nada berdasarkan `Level_Gn`. Berikut langkah-langkah yang dapat diambil untuk memastikan bahwa `Trebel_Aneh` hanya digunakan pada `Level_Gn` tertentu, dan hubungan antara `Trebel_Aneh` dan `Trebel_Biasa` saling eksklusif.


### 1. Penentuan Level_Gn Berdasarkan Bass

Pada tabel `Gn_Cyan_Atas`, `Level_Gn` ditentukan sebagai berikut:


- **Bass_1:**

  - ID 1 = `Level_Gn 1`

  - ID 2 = `Level_Gn 2`

  - ID 3 = `Level_Gn 3`


- **Bass_2:**

  - ID 1 = `Level_Gn 4`

  - ID 2 = Kosong (Tidak boleh diisi)

  - ID 3 = `Level_Gn 5`


- **Bass_3:**

  - ID 1 = `Level_Gn 6`

  - ID 2 = `Level_Gn 7`

  - ID 3 = `Level_Gn 8`


- **Bass_4:**

  - ID 1 = Kosong (Tidak boleh diisi)

  - ID 2 = `Level_Gn 9`

  - ID 3 = `Level_Gn 10`


- **Bass_5:**

  - ID 1 = `Level_Gn 11`

  - ID 2 = `Level_Gn 12`

  - ID 3 = Kosong (Tidak boleh diisi)


### 2. Kondisi Penggunaan `Trebel_Aneh` dan `Trebel_Biasa`

- **Trebel_Aneh** hanya digunakan ketika `Level_Gn` adalah **4, 8, atau 12**.

- **Trebel_Biasa** digunakan di luar `Level_Gn 4, 8, dan 12`.

- Ketika `Trebel_Aneh` digunakan, maka `Trebel_Biasa` harus diabaikan, dan sebaliknya.


### 3. Implementasi Logika untuk Penggunaan `Trebel_Aneh` dan `Trebel_Biasa`


#### a. Fungsi untuk Mengecek `Level_Gn`


```python

def get_level_gn(cursor, id_gn):

    cursor.execute("SELECT Level_Gn FROM Gn_Cyan_Atas WHERE ID = ?", (id_gn,))

    level_gn = cursor.fetchone()[0]

    return level_gn


def should_use_trebel_aneh(level_gn):

    return level_gn in [4, 8, 12]

```


#### b. CRUD untuk `Trebel_Aneh` pada `Gn_Cyan_Bawah` dan `Sub_Gn_Cyan_Bawah`


```python

def update_trebel_aneh_gn_cyan_bawah(cursor, conn, id_gn, trebel_biasa):

    level_gn = get_level_gn(cursor, id_gn)

    

    if should_use_trebel_aneh(level_gn):

        # Logika untuk memperbarui Trebel_Aneh

        trebel_aneh = ''

        

        if id_gn == 1:

            trebel_aneh = trebel_biasa

        elif id_gn in [2, 3]:

            trebel_aneh = ''.join(str(int(char)-1) for char in trebel_biasa if char.isdigit())

        elif id_gn == 4:

            cursor.execute("SELECT Bass_2 FROM Gn_Cyan_Atas WHERE ID = 3")

            bass_2_id_3 = cursor.fetchone()[0]

            trebel_aneh = ''.join(str(int(char)-1) for char in bass_2_id_3 if char.isdigit())

        

        # Update nilai Trebel_Aneh ke tabel Gn_Cyan_Bawah

        cursor.execute("""

            UPDATE Gn_Cyan_Bawah

            SET Trebel_Aneh = ?, Trebel_Biasa = NULL

            WHERE ID = ?

        """, (trebel_aneh, id_gn))

    else:

        # Logika untuk memperbarui Trebel_Biasa saja

        cursor.execute("""

            UPDATE Gn_Cyan_Bawah

            SET Trebel_Biasa = ?, Trebel_Aneh = NULL

            WHERE ID = ?

        """, (trebel_biasa, id_gn))

    

    conn.commit()


def update_trebel_aneh_sub_gn_cyan_bawah(cursor, conn, sub_id_gn):

    level_gn = get_level_gn(cursor, sub_id_gn)

    

    if should_use_trebel_aneh(level_gn):

        cursor.execute("SELECT Bass_1 FROM Sub_Gn_Cyan_Atas WHERE Sub_ID = 1")

        bass_1_sub_id_1 = cursor.fetchone()[0]

        trebel_aneh = ''.join(str(int(char)-1) for char in bass_1_sub_id_1 if char.isdigit())

        

        # Update nilai Trebel_Aneh ke tabel Sub_Gn_Cyan_Bawah

        cursor.execute("""

            UPDATE Sub_Gn_Cyan_Bawah

            SET Trebel_Aneh = ?, Trebel_Biasa = NULL

            WHERE Sub_ID = ?

        """, (trebel_aneh, sub_id_gn))

    else:

        # Kosongkan Trebel_Aneh jika tidak sesuai Level_Gn

        cursor.execute("""

            UPDATE Sub_Gn_Cyan_Bawah

            SET Trebel_Aneh = NULL

            WHERE Sub_ID = ?

        """, (sub_id_gn,))

    

    conn.commit()

```


### 4. Penggunaan dalam Aplikasi


Saat melakukan pembaruan atau memasukkan data pada kolom `Trebel_Aneh` atau `Trebel_Biasa`, pastikan untuk memanggil fungsi `update_trebel_aneh_gn_cyan_bawah` atau `update_trebel_aneh_sub_gn_cyan_bawah` dengan parameter yang sesuai untuk ID dan Sub_ID. Fungsi ini akan memastikan data hanya digunakan atau diabaikan berdasarkan logika `Level_Gn` yang telah ditentukan.


### 5. Contoh Penggunaan Fungsi


```python

# Contoh penggunaan untuk Gn_Cyan_Bawah

trebel_biasa_id_1 = "1234"

update_trebel_aneh_gn_cyan_bawah(cursor, conn, 1, trebel_biasa_id_1)


# Contoh penggunaan untuk Sub_Gn_Cyan_Bawah

update_trebel_aneh_sub_gn_cyan_bawah(cursor, conn, 1)

```

Dengan pendekatan ini, `Trebel_Aneh` dan `Trebel_Biasa` dapat diatur dan digunakan dengan cara yang sesuai dengan kebutuhan komposisi nada berdasarkan `Level_Gn`. Tes secara menyeluruh perlu dilakukan untuk memastikan logika berfungsi dengan baik dalam semua skenario.


Jadi data kolom Trebel_Aneh pada tabel Gn_Cyan_Bawah, dan Sub_Gn_Cyan_Bawah hanya boleh diambil dan ditampilkan pada entry katakanlah psda entry_trebel_aneh, dan entry_sub_trebel_aneh bila level_gn ada pada level_gn 4, atau level_gn 8, atau level_gn 12, jadi pada entry inputan user pada entry_nada opsi pilihan "Trebel" harus dibuat batasan pengambilan dan menampilkan data kolom Trebel_Aneh hanya dibolehkan bila level_gn = 4, atau = 8, atau = 12. Sedangkan pada level_gn 1, 2, 3, 5, 6, 7, 9, 10, 11 adalah untuk pengambilan dan menampilkan data kolom Trebel_Biasa, jadi kita harus kembali lagi untuk memperbaiki kode CRUD pada data kolom Trebel_Biasa pada tabel Gn_Cyan_Bawah.


Baik, kita akan memperbaiki kode CRUD untuk kolom `Trebel_Biasa` pada tabel `Gn_Cyan_Bawah` dengan menambahkan logika untuk membatasi pengambilan dan penampilan data berdasarkan `Level_Gn`. Berikut adalah langkah-langkah yang akan kita ambil:

### 1. Menambahkan Logika Pembatasan Berdasarkan `Level_Gn`

Kita akan memastikan bahwa data dari kolom `Trebel_Biasa` hanya akan diambil dan ditampilkan ketika `Level_Gn` **tidak** berada di 4, 8, atau 12. Sebaliknya, data dari kolom `Trebel_Aneh` hanya akan diambil dan ditampilkan ketika `Level_Gn` adalah 4, 8, atau 12.

### 2. Memperbaiki Kode CRUD untuk `Trebel_Biasa`

Kita akan memodifikasi kode CRUD untuk kolom `Trebel_Biasa` dengan menambahkan pengecekan `Level_Gn` sebelum melakukan operasi pengambilan atau penampilan data.

#### a. Fungsi untuk Mengambil dan Menampilkan `Trebel_Biasa`

```python

def fetch_trebel_biasa(cursor, id_gn):

    level_gn = get_level_gn(cursor, id_gn)    

    if not should_use_trebel_aneh(level_gn):

        cursor.execute("SELECT Trebel_Biasa FROM Gn_Cyan_Bawah WHERE ID = ?", (id_gn,))

        trebel_biasa = cursor.fetchone()

        if trebel_biasa:

            return trebel_biasa[0]

        else:

            return None

    else:

        return None # Tidak mengambil data Trebel_Biasa jika Level_Gn adalah 4, 8, atau 12

```


#### b. Fungsi untuk Mengambil dan Menampilkan `Trebel_Aneh`

```python

def fetch_trebel_aneh(cursor, id_gn):

    level_gn = get_level_gn(cursor, id_gn)    

    if should_use_trebel_aneh(level_gn):

        cursor.execute("SELECT Trebel_Aneh FROM Gn_Cyan_Bawah WHERE ID = ?", (id_gn,))

        trebel_aneh = cursor.fetchone()

        if trebel_aneh:

            return trebel_aneh[0]

        else:

            return None

    else:

        return None # Tidak mengambil data Trebel_Aneh jika Level_Gn bukan 4, 8, atau 12

```

### 3. Memperbaiki Tampilan pada Entry Widgets

Berikut adalah contoh cara mengatur tampilan pada `entry_trebel_biasa` dan `entry_trebel_aneh` berdasarkan `Level_Gn`:


```python

def update_trebel_entries(cursor, id_gn, entry_trebel_biasa, entry_trebel_aneh):

    level_gn = get_level_gn(cursor, id_gn)

    if should_use_trebel_aneh(level_gn):

        # Ambil dan tampilkan Trebel_Aneh

        trebel_aneh = fetch_trebel_aneh(cursor, id_gn)

        entry_trebel_aneh.delete(0, 'end')

        entry_trebel_aneh.insert(0, trebel_aneh if trebel_aneh else "")        

        # Kosongkan Trebel_Biasa

        entry_trebel_biasa.delete(0, 'end')

    else:

        # Ambil dan tampilkan Trebel_Biasa

        trebel_biasa = fetch_trebel_biasa(cursor, id_gn)

        entry_trebel_biasa.delete(0, 'end')

        entry_trebel_biasa.insert(0, trebel_biasa if trebel_biasa else "")    

        # Kosongkan Trebel_Aneh

        entry_trebel_aneh.delete(0, 'end')

```

### 4. Mengintegrasikan Logika ke dalam CRUD

Pastikan bahwa sebelum melakukan operasi CRUD (Create, Read, Update, Delete), kode akan memeriksa `Level_Gn` dan hanya memproses data yang sesuai.

#### c. Contoh Penggunaan Fungsi dalam Aplikasi

```python

# Contoh penggunaan untuk menampilkan data di entry widgets

update_trebel_entries(cursor, id_gn, entry_trebel_biasa, entry_trebel_aneh)

```

### 5. Pengujian Kode

Setelah modifikasi dilakukan, sangat penting untuk menguji kode ini dengan berbagai skenario. Pastikan bahwa:

- `Trebel_Biasa` hanya diambil dan ditampilkan untuk `Level_Gn` 1, 2, 3, 5, 6, 7, 9, 10, 11.

- `Trebel_Aneh` hanya diambil dan ditampilkan untuk `Level_Gn` 4, 8, 12.

- Jika satu kolom diisi, kolom lainnya dikosongkan secara otomatis.

Dengan perubahan ini, logika pengambilan dan penampilan data pada `entry_trebel_biasa` dan `entry_trebel_aneh` akan sesuai dengan ketentuan `Level_Gn` yang telah ditentukan. Apakah ada bagian lain yang perlu diperhatikan atau dikembangkan lebih lanjut?





Komentar

Postingan populer dari blog ini

Pemograman R Studio

  Metode Numerik Menggunakan R Pengantar Gambaran Isi Buku Cara Berkontribusi dalam Buku Ini Ucapan Terima Kasih Lisensi 1  Bahasa Pemrograman R 1.1  Sejarah R 1.2  Fitur dan Karakteristik R 1.3  Kelebihan dan Kekurangan R 1.4  RStudio 1.5  Menginstall R dan RStudio 1.6  Working Directory 1.6.1  Mengubah Lokasi Working Directory 1.6.2  Mengubah Lokasi Working Directory Default 1.7  Memasang dan Mengaktifkan Paket R 1.8  Fasilitas Help 1.8.1  Mencari Help dari Suatu Perintah Tertentu 1.8.2  General Help 1.8.3  Fasilitas Help Lainnya 1.9  Referensi 2  Kalkulasi Menggunakan R 2.1  Operator Aritmatik 2.2  Fungsi Aritmetik 2.3  Operator Relasi 2.4  Operator Logika 2.5  Memasukkan Nilai Kedalam Variabel 2.6  Tipe dan Struktur Data 2.7  Vektor 2.7.1  Membuat vektor 2.7.2  Missing Values 2.7.3  Subset Pada Vektor 2.7.4  Operasi Matematis Menggunakan Vektor ...

MIGRASI DATABASE DARI SQLite KE MySQL (Part-1)

  MIGRASI DATABASE DARI SQLite KE MySQL (Part-1) Pemakaian yang mana lebih baik dalam membuat database_musik di mysql atau Exel yang cell Cell pada tabel dilakukan operasi fungsi logika matematika. Untuk keperluan membuat database atau tabel yang memerlukan operasi logika atau matematika, seperti yang Anda sebutkan, MySQL jauh lebih baik dibandingkan Excel. Berikut adalah beberapa alasan mengapa MySQL lebih disarankan: 1. **Kapasitas dan Skalabilitas**: MySQL dapat menangani jumlah data yang jauh lebih besar daripada Excel. Ini penting jika Anda berencana untuk menyimpan banyak data atau melakukan operasi yang kompleks di atas data tersebut. 2. **Kekuatan dan Kinerja**: MySQL dirancang khusus untuk memproses query dan operasi basis data dengan cepat. Ini termasuk operasi matematika, logika, dan agregasi data yang umum dilakukan dalam aplikasi. 3. **Fleksibilitas Struktur**: Dalam MySQL, Anda dapat dengan mudah menentukan struktur tabel yang kompleks dan melakukan kueri yang lebih r...

Cara Menjadi Pengembang Front End – Keterampilan Front End Web Dev

  Menyumbangkan Belajar coding —  kurikulum 3.000 jam gratis 10 JUNI 2022 / #PENGEMBANGAN UJUNG DEPAN Bagaimana Menjadi Pengembang Front End – Keterampilan Front End Web Dev Joel Olawanle Beberapa profesional dengan bayaran tertinggi di dunia adalah pengembang front-end.  Mereka menggunakan pengetahuan dan bakat mereka untuk merancang situs web yang menarik dan ramah pengguna. Pengembang front-end tidak memerlukan gelar atau sertifikat sekolah untuk bekerja.  Sebaliknya, mereka harus memahami dasar-dasar pengembangan front-end, bahasa pemrograman, dan kerangka kerja pengembangan front-end. Dalam panduan ini, Anda akan belajar bagaimana menjadi pengembang front end dengan terlebih dahulu memahami apa yang dimaksud dengan pengembangan front end, keterampilan teknis dan soft skill yang diperlukan, bahasa dan kerangka kerja yang tersedia, dan beberapa langkah untuk memulai. Seorang pengembang front-end di Amerika Serikat dapat memperoleh rata-rata $86,178 per tahun, menu...