Monthly Archives: Juli 2011

MapXtreme: Too Many Constants in Subexpressions (Maximum is 255)

Beberapa waktu lalu, Mas Ndereklangkung mengalami error ini ketika membuat aplikasi mapxtreme. Dia mencoba melakukan query untuk mencari objek peta. Parameter yang digunakan diambil dari database, diubah jadi string dan dimasukkan dalam query mapinfo
“Select * from Jabodetabek_Sales_Customers where acc_id in (” & xx & “)”
Namun malah muncul error “Unable to parse statement: Select * from Jabodetabek_Sales_Customers where acc_id in (‘5300027541′,’5300058807′,’5300062475′,’…’). Too Many Constants in Subexpressions (Maximum is 255). Ternyata query ‘IN’ di mapinfo hanya mampu menerima 255 parameter. Lebih dari itu akan muncul error

Salah satu cara mengatasi ini adalah memecah queri menjadi beberapa bagian. String parameter yang akan digunakan dalam query, (di contoh ini diambil dari database), kita simpan dalam StringCollection untuk memudahkan mengetahui jumlah parameter dan memisahkannya. xx adalah variabel stringCollection yang akan digunakan.
Read the rest of this entry

MapXtreme: Membuat LayerControl Ver.2.0

Sebelumnya, saya telah menulis bagaimana membuat layercontrol di MXT. Versi 2 ini merupakan versi revisi dari versi 1 yang pernah saya tulis sebelumnya. Saya banyak mengalami kesulitan ketika menerapkan v.1. Karena itu saya memutuskan untuk melakukan perubahan kodenya. Apa yang saya catat disini, hanya bagian yang di ubah. Untuk membuat layercontrol secara lengkap, silahkan baca tulisan sebelumnya.

Kesulitan dari LayerControl v.1

  • Daftar layer tergantung pada data yang disiapkan di database. Baca Bagian 1. Sehingga ketika ada layer peta yang ditambahkan di Workspace manager, layer baru ini tidak secara otomatis ditambahkan ke LayerControl.
  • Di client (javascript), proses dari MapControl ke LayerControl (Baca Bagian 3), checkbox yang ada di layercontrol didefinisikan satu persatu, kita perlu tahu ClientID dari masing-masing checkbox. Jika layer peta ditambahkan di workspace manager, susunan layer akan berubah dan ini berarti harus merubah kode javascript secara manual.

Berdasarkan 2 hal di atas, saya membuat perubahan

  • Daftar layer tidak mengacu pada database yang telah disiapkan sebelumnya, tetapi langsung mengacu pada file MWS. Sehingga, jika ada layer baru ditambahkan di workspace manager, secara otomatis layer baru tersebut akan masuk di layercontrol.
  • Kode javascript untuk proses dari mapcontrol ke layercontrol tidak lagi secara manual. Kita tidak perlu tahu ClientID dari masing-masing checkbox, Javascript akan melakukan looping ke tiap baris di layercontrol dan akan menandai chekbox yang sesuai sesuai kondisi layer yang ada.

Read the rest of this entry