درخواست راهنمایی برای آپدیت کردن قیمت در نرم افزار

faramarz21

New Member
سلام دوستان.
میدونم این مطلب قدیمی است.ولی من نتونستم کارمو راه بندازم با مطالب.اخه اول راهم.
من یه برنامه برای لیست قیمت محصولات نمایندگی مزدا که کار میکنم دارم میسازم ،همه فرم و کاراشو انجام دادم،الان تو قسمتی گیر افتادم.که چطور قیمت ها رو آپدیت کنم؟
لطفا کامل توضیح بدین قابل فهم باشه برام
برنامه:vb6
 

the_king

مدیرکل انجمن
سلام دوستان.
میدونم این مطلب قدیمی است.ولی من نتونستم کارمو راه بندازم با مطالب.اخه اول راهم.
من یه برنامه برای لیست قیمت محصولات نمایندگی مزدا که کار میکنم دارم میسازم ،همه فرم و کاراشو انجام دادم،الان تو قسمتی گیر افتادم.که چطور قیمت ها رو آپدیت کنم؟
لطفا کامل توضیح بدین قابل فهم باشه برام
برنامه:vb6
کسی که از ساختار برنامه شما خبر نداشته باشه نمی تونه کمک تون کنه.
قیمت ها رو از چه منبعی می خوانید و در برنامه نمایش می دهید؟ فایل متنی، پایگاه داده اکسس،...
برنامه تون قیمت ها را با چه جور کنترل ای نمایش میده؟ بهتره تصویری از نحوه نمایش قیمت ها در برنامه تان ارائه کنید.
 

faramarz21

New Member
دوست عزیز.
برنامه به این صورت.رو هر optionbutt کلیک کنی،قیمت داخل textbox پایین نمایش داده میشه.
الان چیکار کنم بهتره؟از فایل متنی استفاده کنم یا پایگاه داده اکسس؟
attachment.php
 

پیوست ها

  • Untitled.jpg
    Untitled.jpg
    213.2 کیلوبایت · بازدیدها: 10

the_king

مدیرکل انجمن
دوست عزیز.
برنامه به این صورت.رو هر optionbutt کلیک کنی،قیمت داخل textbox پایین نمایش داده میشه.
الان چیکار کنم بهتره؟از فایل متنی استفاده کنم یا پایگاه داده اکسس؟
attachment.php

اگه داده ها در همین حد ئه، فایل متنی کفایت می کنه. کد رو طوری می نویسم که هر تعداد TextBox یا OptionButton داشته باشید بدون تغییر کد کار کنه.
با کد زیر هر زمان که دکمه Ctrl + S رو توی فرم فشار دهید اطلاعاتی که توی فرم برای اون تعداد اقساط خاص نوشته اید توی فایل متنی کنار برنامه ذخیره می کنه.

کد:
Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long

Private SettingsPath As String

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyS And Shift = vbCtrlMask Then
        SaveFileData
        MsgBox "Data writed in the " & SettingsPath & " successfully!"
    End If
End Sub

Private Sub Form_Load()
    SettingsPath = App.Path & IIf(Right(App.Path, 1) = "\", "", "\") & "Settings.ini"
    KeyPreview = True
End Sub

Private Sub LoadFileData()
    Dim c As Control
    Dim name As String
    Dim values() As String
    Dim text As String
    Dim line As String
    Dim i As Integer
    Dim pos As Integer
    Dim varname As String
    If PathFileExists(SettingsPath) = 0 Then Exit Sub
    For Each c In Controls
        If TypeName(c) = "OptionButton" Then
            If c.value = True Then
                name = name & ControlName(c) & " "
            End If
        End If
    Next
    name = Trim(name)
    If Len(name) = 0 Then Exit Sub
    Open SettingsPath For Input As #1
        Do Until EOF(1)
            Line Input #1, line
            If Left(line, Len(name) + 1) = name & "=" Then
                values = Split(Mid(line, Len(name) + 2), "|~")
                For i = 0 To UBound(values)
                    pos = InStr(values(i), "=")
                    If pos > 1 Then
                        varname = Left(values(i), pos - 1)
                        For Each c In Controls
                            If TypeName(c) = "TextBox" Then
                                If ControlName(c) = varname Then
                                    c.text = Mid(values(i), pos + 1)
                                    Exit For
                                End If
                            End If
                        Next
                    End If
                Next
                Exit Do
            End If
        Loop
    Close #1
End Sub

Private Sub SaveFileData()
    Dim c As Control
    Dim name As String
    Dim value As String
    Dim text As String
    Dim line As String
    For Each c In Controls
        If TypeName(c) = "OptionButton" Then
            If c.value = True Then
                name = name & ControlName(c) & " "
            End If
        ElseIf TypeName(c) = "TextBox" Then
            value = value + ControlName(c) & "=" & c.text & "|~"
        End If
    Next
    name = Trim(name)
    If Len(name) = 0 Then Exit Sub
    text = name & "=" & value
    If PathFileExists(SettingsPath) <> 0 Then
        Open SettingsPath For Input As #1
            Do Until EOF(1)
                Line Input #1, line
                If Left(line, Len(name) + 1) <> name & "=" Then
                    text = text & vbNewLine & line
                End If
            Loop
        Close #1
    End If
    Open SettingsPath For Output As #1
        Print #1, text
    Close #1
End Sub

Private Function ControlName(c As Object) As String
    If c.Parent.Controls(c.name) Is c Then
        ControlName = c.name
    Else
        ControlName = c.name & "(" & CStr(c.Index) & ")"
    End If
End Function

فقط خودتون باید موقع طراحی فرم روی هر کدوم از اون OptionButton ها دوبار کلیک کنید و توی رخداد Click شون LoadFileData رو فراخوانی کنید تا از فایل اطلاعات رو بخونه، مثلا :
کد:
Private Sub Option1_Click()
    LoadFileData
End Sub

Private Sub Option2_Click()
    LoadFileData
End Sub

یا اگه OptionButton ها رو یک اسم یکسان آرایه ای کرده اید :
کد:
Private Sub Option2_Click(Index As Integer)
    LoadFileData
End Sub
 

faramarz21

New Member
اگه داده ها در همین حد ئه، فایل متنی کفایت می کنه. کد رو طوری می نویسم که هر تعداد TextBox یا OptionButton داشته باشید بدون تغییر کد کار کنه.
با کد زیر هر زمان که دکمه Ctrl + S رو توی فرم فشار دهید اطلاعاتی که توی فرم برای اون تعداد اقساط خاص نوشته اید توی فایل متنی کنار برنامه ذخیره می کنه.

کد:
Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long

Private SettingsPath As String

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyS And Shift = vbCtrlMask Then
        SaveFileData
        MsgBox "Data writed in the " & SettingsPath & " successfully!"
    End If
End Sub

Private Sub Form_Load()
    SettingsPath = App.Path & IIf(Right(App.Path, 1) = "\", "", "\") & "Settings.ini"
    KeyPreview = True
End Sub

Private Sub LoadFileData()
    Dim c As Control
    Dim name As String
    Dim values() As String
    Dim text As String
    Dim line As String
    Dim i As Integer
    Dim pos As Integer
    Dim varname As String
    If PathFileExists(SettingsPath) = 0 Then Exit Sub
    For Each c In Controls
        If TypeName(c) = "OptionButton" Then
            If c.value = True Then
                name = name & ControlName(c) & " "
            End If
        End If
    Next
    name = Trim(name)
    If Len(name) = 0 Then Exit Sub
    Open SettingsPath For Input As #1
        Do Until EOF(1)
            Line Input #1, line
            If Left(line, Len(name) + 1) = name & "=" Then
                values = Split(Mid(line, Len(name) + 2), "|~")
                For i = 0 To UBound(values)
                    pos = InStr(values(i), "=")
                    If pos > 1 Then
                        varname = Left(values(i), pos - 1)
                        For Each c In Controls
                            If TypeName(c) = "TextBox" Then
                                If ControlName(c) = varname Then
                                    c.text = Mid(values(i), pos + 1)
                                    Exit For
                                End If
                            End If
                        Next
                    End If
                Next
                Exit Do
            End If
        Loop
    Close #1
End Sub

Private Sub SaveFileData()
    Dim c As Control
    Dim name As String
    Dim value As String
    Dim text As String
    Dim line As String
    For Each c In Controls
        If TypeName(c) = "OptionButton" Then
            If c.value = True Then
                name = name & ControlName(c) & " "
            End If
        ElseIf TypeName(c) = "TextBox" Then
            value = value + ControlName(c) & "=" & c.text & "|~"
        End If
    Next
    name = Trim(name)
    If Len(name) = 0 Then Exit Sub
    text = name & "=" & value
    If PathFileExists(SettingsPath) <> 0 Then
        Open SettingsPath For Input As #1
            Do Until EOF(1)
                Line Input #1, line
                If Left(line, Len(name) + 1) <> name & "=" Then
                    text = text & vbNewLine & line
                End If
            Loop
        Close #1
    End If
    Open SettingsPath For Output As #1
        Print #1, text
    Close #1
End Sub

Private Function ControlName(c As Object) As String
    If c.Parent.Controls(c.name) Is c Then
        ControlName = c.name
    Else
        ControlName = c.name & "(" & CStr(c.Index) & ")"
    End If
End Function

فقط خودتون باید موقع طراحی فرم روی هر کدوم از اون OptionButton ها دوبار کلیک کنید و توی رخداد Click شون LoadFileData رو فراخوانی کنید تا از فایل اطلاعات رو بخونه، مثلا :
کد:
Private Sub Option1_Click()
    LoadFileData
End Sub

Private Sub Option2_Click()
    LoadFileData
End Sub

یا اگه OptionButton ها رو یک اسم یکسان آرایه ای کرده اید :
کد:
Private Sub Option2_Click(Index As Integer)
    LoadFileData
End Sub

ممنون دوست عزیز از راهنماییت.
ولی دوست من،من میخوام جوری باشه که هر ما،با تغیر قیمت ها
مشتری نمایندگی با زندن دکمه ای داخل فرم،قیمت ها براش آپدیت بشن.
 

the_king

مدیرکل انجمن
ممنون دوست عزیز از راهنماییت.
ولی دوست من،من میخوام جوری باشه که هر ما،با تغیر قیمت ها
مشتری نمایندگی با زندن دکمه ای داخل فرم،قیمت ها براش آپدیت بشن.

کد های Save کردن رو حداقل برای برنامه نسخه خودتان نگهدارید. بخش فراخوانی اش که در برنامه کاربر هم باید بمونه.
بعد از اینکه قیمت ها رو تو برنامه نسخه خودتون آپدیت کردید فایل Settings.ini رو تو سرور مورد نظر آپلود کنید، باید مستقیم قابل دسترسی باشه.
مثلا آدرسی مثل این :
کد:
"http://www.yoursite.com/data/settings.ini"

وقتی روی دکمه ای مثل Command1 کلیک کردید با DownloadFileData از سایت دانلودش می کنه و فایل قیمت داخل برنامه کاربر بروز میشه :
کد:
[COLOR="#A9A9A9"]Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long[/COLOR]
Private Declare Sub URLDownloadToFileA Lib "URLMON.dll" (ByVal lpunknown As Long, ByVal lpcstr As String, ByVal lpcstr As String, ByVal dword As Long, ByVal TLPBINDSTATUSCALLBACK As Long)

[COLOR="#A9A9A9"]Private SettingsPath As String[/COLOR]

Private Sub DownloadFileData(url As String)
    URLDownloadToFileA 0, url, SettingsPath, 0, 0
End Sub

Private Sub Command1_Click()
[B][COLOR="#0000FF"]    DownloadFileData "http://www.yoursite.com/data/settings.ini"[/COLOR][/B]
End Sub
 

faramarz21

New Member
کد های Save کردن رو حداقل برای برنامه نسخه خودتان نگهدارید. بخش فراخوانی اش که در برنامه کاربر هم باید بمونه.
بعد از اینکه قیمت ها رو تو برنامه نسخه خودتون آپدیت کردید فایل Settings.ini رو تو سرور مورد نظر آپلود کنید، باید مستقیم قابل دسترسی باشه.
مثلا آدرسی مثل این :
کد:
"http://www.yoursite.com/data/settings.ini"

وقتی روی دکمه ای مثل Command1 کلیک کردید با DownloadFileData از سایت دانلودش می کنه و فایل قیمت داخل برنامه کاربر بروز میشه :
کد:
[COLOR=#A9A9A9]Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long[/COLOR]
Private Declare Sub URLDownloadToFileA Lib "URLMON.dll" (ByVal lpunknown As Long, ByVal lpcstr As String, ByVal lpcstr As String, ByVal dword As Long, ByVal TLPBINDSTATUSCALLBACK As Long)

[COLOR=#A9A9A9]Private SettingsPath As String[/COLOR]

Private Sub DownloadFileData(url As String)
    URLDownloadToFileA 0, url, SettingsPath, 0, 0
End Sub

Private Sub Command1_Click()
[B][COLOR=#0000FF]    DownloadFileData "http://www.yoursite.com/data/settings.ini"[/COLOR][/B]
End Sub

میشه آی دی تلگرامتونو داشته باشم
 

the_king

مدیرکل انجمن
چطور میتونم یه رکورد خاصی اطلاعاتشو نشون بدم؟

با فراخوانی کردن LoadFileData، نمونه کد اش رو هم قرار داده بودم. LoadFileData بررسی می کنه که کدوم OptionButton ها تیک دارند و بر اساس اونها رکورد مورد نظر رو پیدا می کنه و نمایش میده.
 

faramarz21

New Member
با فراخوانی کردن LoadFileData، نمونه کد اش رو هم قرار داده بودم. LoadFileData بررسی می کنه که کدوم OptionButton ها تیک دارند و بر اساس اونها رکورد مورد نظر رو پیدا می کنه و نمایش میده.

دوست عزیز خود برنامه رو گذاشتم،ببینین با این روش جواب میده؟
چون وقتی رو هر ماشین که انتخاب میکنی باید شرایط خواص خودش باشه.مشاهده پیوست mazda1851bnd.rar
 

the_king

مدیرکل انجمن
دوست عزیز خود برنامه رو گذاشتم،ببینین با این روش جواب میده؟
چون وقتی رو هر ماشین که انتخاب میکنی باید شرایط خواص خودش باشه.مشاهده پیوست 111330

فایل پروژه رو پیوست کرده اید ولی فرم ها رو نه، چیزی که در فایل rar قرار دادید صرفا فایل پروژه است، فرمها داخلش نیست.
 

the_king

مدیرکل انجمن
ببخشین دوست عزیز.
بفرمائید مدیر محترم.هم فایل پروژه،هم فرم هامشاهده پیوست 111332

فراموش نکنید که در فرم Update آدرس http://www.yoursite.com/data رو ویرایش کنید و در فرم Form2 موقع کلیک کردن روی OptionButton ها مدل رو برای Form3 مشخص می کنید :
کد:
Private Sub o1_Click()
[B][COLOR="#0000FF"]    Form3.Model = "B50F"[/COLOR][/B]
    Form3.Show
End Sub

مشاهده پیوست mazda1851bnd.rar
 

faramarz21

New Member
فراموش نکنید که در فرم Update آدرس http://www.yoursite.com/data رو ویرایش کنید و در فرم Form2 موقع کلیک کردن روی OptionButton ها مدل رو برای Form3 مشخص می کنید :
کد:
Private Sub o1_Click()
[B][COLOR=#0000FF]    Form3.Model = "B50F"[/COLOR][/B]
    Form3.Show
End Sub

مشاهده پیوست 111333

خیلی ممنون و سپاس گذارم.باید تو فرم قیمت تو textbox قیمت ها رو عوض کنم و ctrl + s بزنم؟

خیلی خیلی لطف کردی
 

the_king

مدیرکل انجمن
ببخشین سایتی رایگان برای اپلود این پایگاه داده هست؟

سوال تون مربوط به این انجمن نیست، از اونجایی که فرمت فایل تون متنی و کم حجم و بدون خطر ئه قاعدتا وب هاستینگ ها با آپلود کردن و دانلود مستقیم اش مشکلی نخواهند داشت و محدودیت ایجاد نمی کنند.
عبارتی نظیر Top 10 Free Web Hosting sites رو تو گوگل جستجو کنید.
 

جدیدترین ارسال ها

بالا